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) //返回指定索引处的元素