1.Collection常见成员方法

boolean add(E e ) //添加元素
boolean remove(object o) //从集合中移除指定元素
boolean removeif(object o) //移除满足条件的元素
lambda调用方法:
        System.out.println(arr.removeIf((String s) ->{return s.length()==3;}));
匿名内部类调用方法:
        arr.removeIf(new Predicate<String>() {
            @Override
            public boolean test(String s) {
                return s.length() == 3;
            }
        });
调用时需要重写Predicate接口里的test方法(因为removeIf方法内部调用了test方法, 而且removeIf方法需要传入一个接口)
void clear() //清空集合
boolean contains(object o)//判断集合中是否存在指定的元素
boolean isEmpty() //判断集合是否为空
int size() //集合的长度,也就是集合中元素的个数

2.迭代器

迭代器的创建方法:

Iterator<String> it = list.iterator();
//迭代器被创建出来后会自动指向将它创建出来的集合的第一个索引

迭代器的两个常见方法:

boolean hasNext() //判断当前位置是否还有元素可以被取出
E next() //获取当前位置的元素 将迭代器对象移向下一个索引位置

实例

 //it是list集合创建出的迭代器
       while (it.hasNext()){
            System.out.println(it.next());
        }
//所以一共迭代了5次 最后一次迭代器移到了一个不存在索引

3.创建一个迭代器

//新建一个字符串集合
        ArrayList<String> str = new ArrayList<>();
        str.add("a");
        str.add("b");
        str.add("b");
        str.add("c");
        str.add("d");
        //创建迭代器
        Iterator<String> iterator = str.iterator();

迭代器在执行完iterator.next()方法后移向了下一个索引,但调用 iterator.remove()方法后它会删除上一个索引的元素, 所以可以用来精确删除

        while (iterator.hasNext()){
            String s = iterator.next();
            if ("b".equals(s)){
                iterator.remove();//执行后删的是迭代器上次所在的索引
            }
        }

集合的体系结构

集合的体系结构

4.增强for

增强 for 循环可以用于以下两类对象:
1.数组
2.实现了 Iterable 接口的对象:如Collection(单列集合)接口及其子接口,Map(双列接口)不能使用增强for

//增强for的定义方法
for(元素类型 自拟元素名 : 需要遍历的集合或数组){
//代码块
}
//使用案例
        ArrayList<String> list = new ArrayList<>();
        list.add("a");
        list.add("b");
        for (String str : list){
            System.out.println(str);
        }
//这里的str只是个第三方变量 相当于String str = list[0]; 
//所以在增强for中修改str的值不会影响集合中的元素

请注意!!

普通for循环里不能通过索引得到集合的值 也就是说:

//这样是错误的!
        ArrayList<String> list = new ArrayList<>();
        list.add("A");
        list.add("B");
        list.add("C");
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list[i]);
        }
//正确做法应该用增强for或者list.get(i)
        for (String s : list) {
            System.out.println(s);
        }

5.三种循环的使用场景

如果需要操作索引,使用普通for循环
如果在遍历的过程中需要删除元素,请使用迭代器
如果仅仅想遍历,那么使用增强for

6.List集合的特点

有序:存储和取出的元素顺序一致
有索引:可以通过索引操作元素
可重复:存储的元素可以重复

//List集合的特有方法
void add(int index, E element) //在集合的指定位置插入指定的元素, 别的元素会自动向后迁移

E remove(int index) //删除指定索引处的元素,返回被删除的元素

E set(int index, E element) //修改指定索引处的元素, 返回被修改的元素

E get(int index) //返回指定索引处的元素