java中的集合框架简介

a98a6619c9744b12bf4ff466c50089b0.gif

 

  集合框架:用来表示和操作的统一的架构,包含了实现集合的接口与类。

 

     集合又称为容器(containers),简单的来说集合框架就是一个对象,可以将具有相同性质的多个元素汇聚成一个整体。集合被用于存储、获取操纵和传输聚合的数据----存放数据的容器。

 

  集合框架的核心接口为Collection、 List、 Set 和 Map.

 

 

 

1. Collection集合接口

  Collection是一组各自独立的元素,通常拥有相同的套用规则。Set 、List由它派生。

 

基本操作:

 

方法

 

方法作用

 

boolean add(Object obj)

 

将指定对象obj新增至集合内,增加成功传回true,否则传回false

 

boolean addAll(Collection c)

 

将指定集合c内所有元素新增至集合内,增加成功传回true,否则传回false

 

viod clear()

 

将集合内所有元素清空

 

boolean isEmpty()

 

检查集合内是否没有任何元素,如果是传回true,否则传回false

 

Iterator iterator()

 

将集合内的元素信息转存成Iterator对象

 

boolean remove(Object obj)

 

将指定元素obj从集合内移除,成功移除传回true,否则传回false

 

int size()

 

将集合内的元素总数传回

 

Object[] toArray()

 

将集合内的元素转存到数组后传回该数组

 

  

 

  containsAll()方法:查找当前集合是否包含了另外一个集合的所有元素,即另外一个元素是否是当前集合的子集。

 

  addAll()方法:将另外一个集合中的所有元素添加到当前集合中,类似于“并”操作。

 

  clear()方法:删除当前集合中的所有元素。

 

  removeAll()方法:类似于clear()方法,但是删除的是集合的一个子集。

 

  retainAll()方法:类似于removeAll()方法,从当前集合中删除不属于子集的元素,即“交集运算”。

 

 

 

Iterator接口方法:

 

 

 

方法

 

方法说明

 

void add(Object obj)

 

将Obj插入列表中的一个元素前,该元素在下一次调用next()方法时被返回

 

boolean hasNext()

 

如果存在下一个元素,则返回true,否则返回false

 

boolean hasPrevious()

 

如果存在前一个元素,则返回true,否则返回false

 

Object next()

 

返回下一个元素,如不存在,引发一个NoSuchElementException异常

 

int nextIndex()

 

返回下一个元素的下表,如果不存在下一个元素,则返回列表的大小

 

Object previous()

 

返回前一个元素,如不存在,引发一个NoSuchElementException异常

 

void remove()

 

从列表中删除当前元素

 

void set(Object obj)

 

将obj赋给当前元素。即上一次调用next()方法或previousfangfa后返回的元素

 

 

 

 Collection实现类:

 

类名

 

类的说明

 

AbstractCollection

 

实现大多数Collection接口

 

AbstractList

 

扩展AbstractCollection并实现大多数List接口

 

AbstractSequentialList

 

为了被类集使用而扩展AbstractList,该类集是连续而不是用随机方式访问其元素

 

LinkedList

 

通过扩展AbstractSequentialList来实现连接表

 

ArrayList

 

通过扩展AbstractList来实现动态数组

 

AbstractSet

 

扩展AbstractCollection并实现大多数AbstractSet

 

HashSet

 

为了使用散列表而扩展AbstractSet

 

TreeSet

 

实现存储在树中的一个集合,扩展扩展AbstractSet

 

   

  JDK 不提供Collection 接口的任何直接实现:它提供更具体的子接口(如 Set 和 List)实现Collection 接口通常用来传递 collection,并在需要最大普遍性的地方操作这些 collection。

  所有通用的 Collection 实现类(通常通过它的一个子接口间接实现 Collection)应该提供两个“标准”构造方法:一个是 void(无参数)构造方法,用于创建空 collection;另一个是带有 Collection 类型单参数的构造方法,用于创建一个具有与其参数相同元素新的 collection。实际上,后者允许用户复制任何 collection,以生成所需实现类型的一个等效 collection。尽管无法强制执行此约定(因为接口不能包含构造方法),但是 Java 平台库中所有通用的 Collection 实现都遵从它。 

 

 

复制代码

 1 package demo;

 2 

 3 import java.util.*;

 4 

 5 /**

 6 * 集合框架的简单测试

 7 * Created by luts on 2015/12/5.

 8 */

 9 public class test {

10 public static void main(String[] args) throws Exception{

11 Collection country = new HashSet(); //set是无序的、没有重复元素的集合

12 country.add("China");

13 country.add("Canada");

14 country.add("Italy");

15 country.add("Japan");

16 country.add("China"); //重复插入一个元素

17 

18 System.out.println("size = " + country.size());

19 for (Iterator it = country.iterator(); it.hasNext();)

20 System.out.println(it.next());

21 

22 System.out.println();

23 

24 Collection countryNew = new ArrayList(); //List元素有序,可以添加重复的元素

25 countryNew.add("China");

26 countryNew.add("Canada");

27 countryNew.add("Italy");

28 countryNew.add("Japan");

29 countryNew.add("China"); //重复插入一个元素

30 System.out.println("size = " + countryNew.size());

31 for (Iterator it = countryNew.iterator(); it.hasNext();)

32 System.out.println(it.next());

33 }

34 }

复制代码

结果:

 

复制代码

size = 4

Canada

China

Japan

Italy

 

size = 5

China

Canada

Italy

Japan

China

复制代码

 

 

Java集合类collections

  就像有专门的java.util.Arrays来处理数组,Java中对集合也有java.util.Collections来处理。

 

 

 

第一组方法主要返回集合的各种数据:

Collections.checkedCollection / checkedList / checkedMap / checkedSet / checkedSortedMap / checkedSortedSet:  

检查要添加的元素的类型并返回结果。任何尝试添加非法类型的变量都会抛出一个ClassCastException异常。这个功能可以防止在运行的时候出错。

 

 

Collections.emptyList / emptyMap / emptySet :返回一个固定的空集合,不能添加任何元素。

 

Collections.singleton / singletonList / singletonMap:返回一个只有一个入口的 set/list/map 集合。

 

 

Collections.synchronizedCollection / synchronizedList / synchronizedMap / synchronizedSet / synchronizedSortedMap / synchronizedSortedSet:获得集合的线程安全版本(多线程操作时开销低但不高效,而且不支持类似put或update这样的复合操作)

 

 

Collections.unmodifiableCollection / unmodifiableList / unmodifiableMap / unmodifiableSet / unmodifiableSortedMap / unmodifiableSortedSet:返回一个不可变的集合。当一个不可变对象中包含集合的时候,可以使用此方法。

 

 

第二组方法中,其中有一些方法因为某些原因没有加入到集合中:

 

Collections.addAll:  添加一些元素或者一个数组的内容到集合中。

Collections.binarySearch:  和数组的Arrays.binarySearch功能相同。

Collections.disjoint:  检查两个集合是不是没有相同的元素。

Collections.fill:  用一个指定的值代替集合中的所有元素。

Collections.frequency:  集合中有多少元素是和给定元素相同的。

 

 

Collections.indexOfSubList / lastIndexOfSubList:和String.indexOf(String) / lastIndexOf(String)方法类似——找出给定的List中第一个出现或者最后一个出现的子表。

 

 

Collections.max / min:  找出基于自然顺序或者比较器排序的集合中,最大的或者最小的元素。

Collections.replaceAll:  将集合中的某一元素替换成另一个元素。

Collections.reverse:  颠倒排列元素在集合中的顺序。如果你要在排序之后使用这个方法的话,在列表排序时,最好使用Collections.reverseOrder   比较器。

Collections.rotate:根据给定的距离旋转元素。

Collections.shuffle:随机排放List集合中的节点,可以给定你自己的生成器——例如 :java.util.Random / java.util.ThreadLocalRandom or java.security.SecureRandom。

 

 

Collections.sort:将集合按照自然顺序或者给定的顺序排序。

Collections.swap:交换集合中两个元素的

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值