Collection接口实现类的特点:
public interface Collection<E> extends Iterable<E>
以 ArrayList 实现类来演示:
import java.util.ArrayList;
import java.util.List;
public class CollectionMethod {
public static void main(String[] args) {
//1.add:添加单个元素
List list = new ArrayList();
list.add("字符串");
list.add(128);//list.add(new Integer(10))
list.add(true);
System.out.println("list="+list);//list=[字符串, 128, true]
//2.remove:删除指定元素
//list.remove(0);//删除第一个元素
//System.out.println("list="+list);//list=[128, true]
list.remove("字符串");//指定删除某个元素
System.out.println("list="+list);//list=[128, true]
//3.contains:查找某个元素是否存在
System.out.println(list.contains(128));//true
//4.size:返回元素个数
System.out.println(list.size());//2
//5.isEmpty:判断是否为空
System.out.println(list.isEmpty());//false
//6.clear:清空
list.clear();
System.out.println("list= "+list);//list= []
//7.addAll:添加多个元素
ArrayList list2 = new ArrayList();
list2.add("开心");
list2.add("每");
list2.add(1);
list2.add("天");
list.addAll(list2);//传入一个集合
System.out.println("新的list:"+list);//新的list:[开心, 每, 1, 天]
//8.containsAll:查找多个元素是否存在
System.out.println(list.containsAll(list2));//true
//9.removeAll:删除多个元素
list.removeAll(list2);
System.out.println("list="+list);//list=[]
}
}
迭代器执行原理:
Iterator iterator = new coll.iterator(); 得到一个集合迭代器
hasNext() :判断是否还有下一个元素
while(iterator.hasNext()){
next()作用:指针下移,将下移后以后集合位置上的元素返回
System.out.println(iterator.next());
}
每 next() 一次,箭头下移一次:
注意:在调用 iterator.next( ) 方法之前,必须要调用iterator.hasNext( ) 进行检测;若不调用,且下一条记录无效,直接调用 iterator.next( ) 会抛出 NoSuchElementException异常。
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class CollectionIterator {
public static void main(String[] args) {
Collection col = new ArrayList();
col.add(new Book("三国演义","罗贯中",10.1));
col.add(new Book("红楼梦","曹雪芹",34.6));
col.add(new Book("西游记","吴承恩",28.8));
System.out.println("col : "+col);
//col : [Book{name='三国演义', author='罗贯中', price=10.1}, Book{name='红楼梦', author='曹雪芹', price=34.6}, Book{name='西游记', author='吴承恩', price=28.8}]
//遍历 col
//1.先得到col集合对应的迭代器
Iterator iterator = col.iterator();
//2.使用while循环遍历
//快捷键快速生成while循环 输入itit回车即可
//crtl+j 可以查看当前所有快捷键
while(iterator.hasNext()){ //判断是否还有数据
//next()返回下一个元素,类型是Object
Object obj = iterator.next();
System.out.println(obj);
//Book{name='三国演义', author='罗贯中', price=10.1}
//Book{name='红楼梦', author='曹雪芹', price=34.6}
//Book{name='西游记', author='吴承恩', price=28.8}
//3.当退出while循环后,此时iterator迭代器指向最后的元素
//iterator.next(); --> NoSuchElementException
//4.若还要使用迭代器,需要重置迭代器
iterator = col.iterator();
}
}
}
class Book{
private String name;
private String author;
private double price;
public Book(String name, String author, double price) {
this.name = name;
this.author = author;
this.price = price;
}
@Override
public String toString() {
return "Book{" +
"name='" + name + '\'' +
", author='" + author + '\'' +
", price=" + price +
'}';
}
}
增强for循环,可以代替 iterator迭代器,特点:增强for循环就是简化版的iterator,本质一样,只能用于遍历集合或数组;
基本语法:
for(元素类型 元素名 : 集合名或数组名){
访问元素
}
import java.util.ArrayList;
import java.util.Collection;
public class CollectionIterator {
public static void main(String[] args) {
Collection col = new ArrayList();
col.add(new Book("三国演义","罗贯中",10.1));
col.add(new Book("红楼梦","曹雪芹",34.6));
col.add(new Book("西游记","吴承恩",28.8));
//增强for循环 不仅可以用于集合,数组也同样适用
//底层仍然是迭代器iterator 相当于简化版迭代器
//快捷键 输入I后回车
for (Object book:col) {
System.out.println(book);
}
//Book{name='三国演义', author='罗贯中', price=10.1}
//Book{name='红楼梦', author='曹雪芹', price=34.6}
//Book{name='西游记', author='吴承恩', price=28.8}
}
}
class Book{
private String name;
private String author;
private double price;
public Book(String name, String author, double price) {
this.name = name;
this.author = author;
this.price = price;
}
@Override
public String toString() {
return "Book{" +
"name='" + name + '\'' +
", author='" + author + '\'' +
", price=" + price +
'}';
}
}