Java-Collection类

来源:互联网 发布:国密算法sm2证书制作 编辑:程序博客网 时间:2024/06/05 17:35

Collection类

Collection类:接口.表示一组对象,这些对象也称为Collection的元素.它提供更具体的子接口(如 Set 和 List)实现.

集合的继承体系图.


常用功能:

添加功能:

boolean add(Object e):给集合中添加指定的元素.

boolean addAll(Collection c):给集合中添加一个集合中的元素.

删除功能:

void clear():删除一个集合中的所有元素(暴力删除).

boolean remove(Object o):删除一个集合中的指定元素.

boolean removeAll(Collection c):删除指定集合中的所有元素.删除一个也是删除.

判断功能:

boolean contains(Object o):判断一个集合中是否包含一个指定的元素.

boolean containsAll(Collection c):判断一个集合中是否包含另一个集合.包含所有元素.

boolean isEmpty():判断集合是否为空.

交集功能:

boolean retainAll(Collection c):A与B集合做交集,交集的元素去A集合.返回值boolean表达的意识是A集合中的元素是否发生变化,如果发生变化,就返回true;否则,false.

获取功能:

int size():获取集合中的元素数.

Iterator<E> iterator():迭代器

迭代器原理图:


转化功能:

Object[ ] toArray():将集合转化为数组.

相关代码:

package weotes;import java.util.ArrayList;import java.util.Collection;import java.util.Iterator;public class CollectionDemo {public static void main(String[] args) {Collection c=new ArrayList();Collection c2=new ArrayList();c.add("I");c.add("Love");c.add("立华奏");c2.add("you");//添加功能System.out.println("add:"+c.add("you"));System.out.println("addAll:"+c.addAll(c2));System.out.println("-------------");//删除功能System.out.println("remove:"+c.remove("you"));System.out.println("removeAll:"+c.removeAll(c2));System.out.println("-------------");//判断功能System.out.println("contains:"+c.contains("you"));System.out.println("containsAll:"+c.containsAll(c2));System.out.println("-------------");//交集功能:System.out.println("retainAll:"+c.retainAll(c2));System.out.println("-------------");//获取功能sizeSystem.out.println("c:"+c.size());System.out.println("c2:"+c2.size());System.out.println("-------------");//输出System.out.println("c:"+c);System.out.println("c2:"+c2);System.out.println("-------------");//迭代器for(Iterator it=c2.iterator();it.hasNext();){String s=(String)it.next();System.out.println(s+"---"+s.length());}System.out.println("-------------");//转化功能Object[] obj=c2.toArray();for(int i=0;i<obj.length;i++){String s=(String)obj[i];System.out.println(s);}}}
结果为:
add:true
addAll:true
-------------
remove:true
removeAll:true
-------------
contains:false
containsAll:false
-------------
retainAll:true
-------------
c:0
c2:1
-------------
c:[]
c2:[you]
-------------
you---3
-------------
you

集合和数组的区别?
1)长度的区别:

 数组:长度是固定的;

 集合:长度是可变的

 2)存储数据类型的区别:

 数组:可以存储引用类型,可以存储基本数据类型

 集合:只能存储引用类型

 3)存储元素的区别

 数组:在同一个数组中,只能存储同一种数据类型的元素;

 集合:可以 存储多种数据类型的元素;

List集合:List集合是一个有序的集合(存储元素和取出元素是一致的!),该元素中的元素是可以重复的.

特有功能:

添加功能:

void add(int index,Object element):在列表的指定位置插入指定元素.

删除功能:

Object remove(int index):删除列表指定位置的元素,返回被删除的元素.

获取功能:

ListIterator listIterator():列表迭代器:List集合的专有遍历方式

列表迭代器接口中有以下几个方法:

 boolean hasNext():判断是否有下一个可以迭代的元素(正向遍历)

 Object next():如果有可以遍历的元素,就获取这个元素

 boolean hasPrevious():判断是否有上一个可以迭代的元素(逆向遍历)

 Object previous():如果有上一个可以迭代的元素,就获取上一个元素.

 注意: 要使用逆向遍历,前提必须有正向遍历存在,直接使用逆向遍历,没有意义!

Object get(int index):返回列表中的指定位置的元素.

替换:

set(int index,Object element):用指定元素替换列表指定位置的元素.

相关代码:

import java.util.ArrayList;import java.util.List;import java.util.ListIterator;public class ListDemo {public static void main(String[] args) {List list=new ArrayList();//添加功能list.add("I");list.add("Love");list.add("立华奏");list.add(2, "you");//获取功能getSystem.out.println("get:"+list.get(2));System.out.println("-------------");//删除功能list.remove(2);//List专有迭代器ListIterator it=list.listIterator();while(it.hasNext()){String s=(String)it.next();System.out.println(s+"---"+s.length());}System.out.println("-------------");//逆向遍历while(it.hasPrevious()){String s=(String)it.previous();System.out.println(s+"---"+s.length());}System.out.println("-------------");//替换功能setSystem.out.println("set:"+list.set(2, "you"));}}
结果为:
get:you
-------------
I---1
Love---4
立华奏---3
-------------
立华奏---3
Love---4
I---1
-------------
set:立华奏

注意:java.util.ConcurrentModificationException:并发修改异常:当方法检测到对象的并发修改,但不允许这种修改时,抛出此异常。

原因:当前我们用迭代器去遍历元素,使用集合添加的元素,对于迭代器不知道集合添加了这个元素,所以会发生这个异常

描述:使用迭代器去遍历集合,是不能直接集合添加元素!

解决方案:1)使用迭代器遍历集合,使用迭代器添加元素.

2)使用集合遍历,使用集合添加元素.



原创粉丝点击