Collection单列集合中包含List和Set两大类
本文介绍的是List接口
List接口的特点:元素存取有序,有索引,并且可重复
而List中又分为ArrayList、LinkedList两大类
ArrayList集合:底层是数组结构,元素增删慢,查找快,线程较不安全,效率高
LinkedList集合:底层是链表结构,元素增删快,查找慢,线程较安全,效率低
Collection接口的常用方法:
public boolean add(E e) 把给定的对象添加到当前集合中 。
Collection<String> c = new ArrayList<>();
c.add("aa");
c.add("bb");
System.out.println(c); //输出:["aa","bb"]
public void clear() 清空集合中所有的元素。
Collection<String> c = new ArrayList<>();
c.add("aa");
c.add("bb");
c.clear();
System.out.println(c); //输出:[]
boolean remove(E e) 把给定的对象在当前集合中删除。
Collection<String> c = new ArrayList<>();
c.add("aa");
c.add("bb");
c.remove("aa");
System.out.println(c); //输出:["bb"]
boolean contains(E e) 判断当前集合中是否包含给定的对象。
Collection<String> c = new ArrayList<>();
c.add("aa");
boolean b1 = c.contains("aa");
boolean b2 = c.contains("cc");
System.out.println(b1); //输出:true
System.out.println(b2); //输出:false
public boolean isEmpty() 判断当前集合是否为空。
Collection<String> c = new ArrayList<>();
c.add("aa");
c.add("bb");
boolean b1 = c.isEmpty();
System.out.println(b1); //输出:false
c.clear();
boolean b2 = c.isEmpty();
System.out.println(b2); //输出:true
public int size() 返回集合中元素的个数。
Collection<String> c = new ArrayList<>();
c.add("aa");
c.add("bb");
int i = c.size();
System.out.println(i); //输出:2
public Object[] toArray() 把集合中的元素,存储到数组中。
Collection<String> c = new ArrayList<>();
c.add("aa");
c.add("bb");
String [] arr = c.toArray(); //用数组接受toArray()方法返回值
Collection的常用方法在单列集合的所有集合中都可以使用!!
List接口特有方法:
public void add(int index, E element) 将指定的元素,添加到该集合中的指定位置上。
ArrayList<String> c = new ArrayList<>();
c.add("aa");
c.add("bb");
c.add(1,"cc");
System.out.println(c); //输出:["aa","cc","bb"]
public E get(int index) 返回集合中指定位置的元素。
索引是从第一个元素由0开始算起
ArrayList<String> c = new ArrayList<>();
c.add("aa");
c.add("bb");
int i = c.get("bb");
System.out.println(i); //输出:1
public E remove(int index) 移除列表中指定位置的元素, 返回的是被移除的元素。
ArrayList<String> c = new ArrayList<>();
c.add("aa");
c.add("bb");
c.remove(0);
System.out.println(c); //输出:["bb"];
public E set(int index, E element) 用指定元素替换集合中指定位置的元素,返回值的更新前的元素。
ArrayList<String> c = new ArrayList<>();
c.add("aa");
c.add("bb");
c.set(1,"cc");
System.out.println(c); //输出:["aa","cc"]
注意:若使用Collection作为接受对象,创建ArrayList<>集合 不能使用List的特有方法 (原因:多态)。
例:Collection<String> c = new ArrayList<>();
普通for循环遍历List集合:
使用普通for循环,可使用list集合的size()方法,作为终止循环的界限
再使用get()方法或许每一个索引的元素,完成集合的遍历
仅适用于有元素的List集合遍历!!
ArrayList<String> c = new ArrayList<>();
c.add("aa");
c.add("bb");
for(int i = 0 , i < list.size() , i++ ){
String str = list.get(i);
System.out.println(str); //输出:"aa" "bb"
}
增强for循环遍历集合:
格式:
for( 元素类型 变量名 : 集合/数组名 ){
//要执行的遍历代码块
}
增强for循环不仅可以遍历List集合,还能遍历其他类型集合(List集合、Set集合、Map集合),和数组
相比普通for循环遍历方式便捷简单了不少
注意:
增强for循环仅能用来查询遍历集合,不能用作增删操作
ArrayList<String> list = new ArrayList<>();
c.add("aa");
c.add("bb");
for (String str : list ){
System.out.println(str); //输出:"aa" "bb"
}
Iterator迭代器遍历集合
获取迭代器:
通过Collection接口或实现类创建的对象调用iterator()方法获得迭代器对象
并用 Iterator<> 变量名 来接受
Iterator迭代还有两个常用的遍历方法:
boolean hashNext() 判断迭代器下一指针处是否有元素,返回boolean值
E next() 取到hashNext()指针所指处元素的位置,并将指针往后移一位!!
注意:next()方法和hashNext()必须一起使用!因为next()方法会移动指针
并且Iterator迭代器不能用作增删,只能用来遍历集合使用
ArrayList<String> list = new ArrayList<>();
c.add("aa");
c.add("bb");
Iteartor<String> it = list.iterator();
while(it.hasNext()){
System.out.println(it.next()); //输出:"aa" "bb"
}