Collection单列集合 ——List接口

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"
}

猜你喜欢

转载自blog.csdn.net/weixin_42022555/article/details/81481889