简述Java集合框架

数据结构是以某种形式将数据组织在一起的集合。数据结构不仅存储数据,还支持访问和处理数据的操作。这些数据结构通常称为Java集合框架。

Java集合框架支持以下两种类型的容器:

一种是为了存储一个元素集合,简称集合(collection)。

另一种是为了存储键/值对,称为图(map)。

一、Collection接口

Java集合框架支持三种主要类型的集合:规则集(Set)、线性表(List)和队列(Queue)。其层级关系图为:


1、规则集Set

Set接口扩展了Collection接口。它没有引入新的方法或常量,只是规定了Set的实例不能包含重复的元素。实现Set的具体类必须确保没有向这个规则集添加重复的元素。也就是说,在一个规则集中,一定不存在元素value1、value2使得value1.equals(value2)的返回值为true。

Set接口的三个具体类是散列集HashSet、链式散列集LinkedHashSet和树形集TreeSet。

HashSet

HashSet实现Set接口,可以用来存储不相同的元素。当你向HashSet中重复添加一个元素,只会有一个存入HashSet中,另HashSet中元素是无序的。

LinkedHashSet

LinkedHashSet用一个链表实现来扩展HashSet,它支持对规则集中的元素按照插入顺序排序

TreeSet

TreeSet是SortedSet的一个具体子类,SortedSet是Set的一个子接口。在TreeSet中只要对象可比较,就可通过下列两种方法排序:

1、使用Comparable接口。当添加到TreeSet中的元素是Comparable的实例时,如String、Date、Calender等,就可以使用compareTo方法对它们进行比较。此种排序出的顺序通常又叫做自然顺序。

2、使用比较器接口Comparator实现。通过比较器中compare(Object obj1, Object obj2)方法实现自定义排序。此种排序出的顺序叫做比较器顺序。

2、线性表List

规则集只能存储不重复的元素,而线性表不仅可以存储相同的元素,还可以允许用户指定其存储位置。用户可以通过下标访问元素。

List接口中方法有

+add(int index) //指定下标添加元素  
+addAll(int index, Collection<? extends E> c) //指定下标处添加c中所有元素  
+get(int index) //返回指定下标元素  
+lastIndexOf(Object o) //返回相同元素的下标  
+listIterator() //返回遍历列表的迭代器  
+listIterator(int startIndex) //返回从startIndex开始的所有元素的迭代器  
+remove(int index) //删除指定下标的元素  
+set(int index, E element) //设置指定下标的元素  
+subList(int fromIndex, int toIndex) //返回从fromIndex到toIndex元素子列表 
List接口的两个具体实现类为:数组线性表ArrayList和链表LinkedList。


ArrayList

ArrayList用数组存储元素,这个数组是动态创建的。如果元素个数超过了数组的容量,就创建一个更大的新数组,并将当前数组中的所有元素都复制到新数组中。

LInkedList

LinkedList是在一个链表中存储元素

3、队列

队列是一种先进先出的数据结构。元素被追加到队列末尾,然后从队列头删除。


二、Map接口

图是一种依照键值存储元素的容器。键就像一个下标。不过不同于List中,下标是整数。在Map中,键可以是任意类型的对象。Map中不能用相同的键,每个键对应一个值。

Map的具体实现类有:散列图HashMap、链式散列图LinkedHashMap和树形图TreeSet。

HashMap

与HashSet相似,存储是无序的。

LinkedHashMap

在LinkedHashMap中,元素可以按照它们插入时的顺序排序,也可以按照它们最后一次访问时的顺序,从最早到最晚排序。

TreeMap

和TreeSet一样,可以通过两种方法排序。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值