1.Java集合的核心接口
Collection:一种基本接口,它定义了一些普通操作,通过这些操作可以将一个对象集合当作一个独立的单元来对其进行存放和处理;
Set:set接口扩展了Collection接口,用来提供集的维护的所需的功能(元素不重复、唯一)。实体类有:HashSet,LinkedHashSet;
SortedSet:SortedSet接口扩展了set接口,用来维护集的所需的功能,实体类有:TreeSet;
List:List接口扩展了Collection接口,用来存放某个元素序列,;实体类有:ArrayList,Vector;LinkedList;
Map:一种基本接口,定义了键值对映射关系维护的操作;实体类有:HashMap,HashTable,LinkedHashMap;
SortedMap:针对以键序排序存放其映射关系的映射,该接口扩展了Map,实体类有:TreeMap
2.Iterator接口
通过循环输出类集中的元素用迭代器模式(Iterator),也叫游标模式(Cursor),Itreator是一种允许程序员检查容器内元素并实现元素遍历的数据类型,可以完成通过循环输出类集内容,从而获得或者删除元素。常用的方法:boolean hasNext();Object next();void remove();
3.List接口的实现类
(1)LinkedList链表类实现了List接口,允许null元素;除了继承List的方法还有自己的方法,例如:addFirst(),addLast(),getFirst(),removeFirst(),removeLast().这些操作可被用作堆栈(Stack)、队列(queue)或双向队列。
两个构造方法:LinkedList()//建立一个空的链接列表
LinkedList(Collection c)//建立一个链接列表,由c中的元素初始化
LinkedList没有同步方法,如果多个线程同时访问一个List,则必须自己实现访问同步,一种解决方法是在创建List使构造一个同步的List。
List list=Collection.synchronizedList(new LinkedList(....))
(2)ArrayList数组列表类,是一个可变长数组。大小可以动态地增加或减小,可以创建一个原始大小的数组,当超过了大的大小就自动增加,对象删除后就自动减少,允许null。ArrayList没有实现同步。
构造方法:ArrayList();//建立一个空的数组列表
ArrayList(Collection c)//建立一个数组列表,由c中的元素初始化
ArrayList(int i)//建立一个数字列表,该数组有指定的初始容量
(3)Vector存储类,类似于ArrayList,但是Vector是同步的。有Vector创建的Iterator,和ArrayList创建的Iterator是同一个接口。当Iterator被创建且正在被使用是,另一个线程改变了Vector的状态(增加或删除一些元素),由于Vector是同步的,这时调用Iterator的方法将抛出ConcurrentModificationException,因此必须捕获该异常。
Vector()//创建一个原始大小为10的默认矢量;
Vector(int size);//创建一个其原始容量有size指定的矢量
Vector(int size,int incr)//创建一个其原始容量由size指定,且他的增量由incr指定
Vector(Collection c)//创建一个包含了类集c中元素的的矢量
创建一个Vector实例化对象,可以使用其方法:addElement()增加一个元素,elementAt()获得指定位置的元素。firstElement()得到矢量的第一个元素,lastElement()获得矢量的最后一个元素,indexOf()和lastIndexOf()方法后的元素的位置(下标),removeElement()或removeElementAt()方法可以删除元素
(4)Stack类
Stack类继承自Vector,实现一个后进先出的堆栈。只有一个默认构造创建空堆栈Stack();Stack提供了5个额外的方法使得Vector可以当作堆栈使用。Stack有基本的push()、pop()、还有peek()方法用来得到栈顶的元素。empty()可以检测堆栈是否为空。search()方法检测一个元素在堆栈中的位置。
4.Set接口的实现类(常用的类有HashSet和TreeSet)
(1)HashSet,扩展了AbstractSet并且实现了Set接口。该类集使用散列表进行存储。散列表通过使用称之为散列法的机制存储信息,在散列(hashing)中,一个关键字的信息内容被用来确定唯一的值,称为散列码(hash code)。散列码被用来当作与关键字相连的数据的存储下标。关键字到其散列码的转换是自动执行的---看不到散列码本身。
程序代码不能直接索引散列表。散列法的优点在于大的集合,它允许一些基本的操作,如add(),contains(),remove()和size()方法。
构造方法如下:HashSet();
HashSet(Collection c)
HashSet(int capacity)
HashSet(int capacity,float fillRatio)
HashSet没有定义任何超类和接口提供的其他方法。散列集合并不能确定其元素的排列顺序,因为散列法的处理通常不让自己参与创建排序集合
(2)TreeSet类,TreeSet为使用树结构来进行存储的Set接口提供了一个工具,对象按升序存储。访问和检索是很快的。在存储了大量需要进行快速检索的排序信息的情况下,TreeSet是一个很好的选择。构造函数:TreeSet();
TreeSet(Collection c)
TreeSet(Comparator comp)
TreeSet(SortedSet ss)
5.Map映射接口
Map没有继承Collection接口,它提供了key到value的映射。Map中不能包含相同的Key,每一个key只能映射一个value。Map接口提供3中集合的视图,Map的内容可以别当作一组key集合、一组value集合或一组key-value映射
(1)Hashtable哈希表类
Hashtable继承Map接口,实现一个key-value映射的哈希表,任何非空的对象都可以当作key或value。添加数据使用put(key,value)方法,取出数据使用get(key)。
Hashtable通过initial capacity和loader factor两个参数调整性能。通常默认的loader factor0.75较好地实现了时间和空间的均衡,增加loader factor可以节省空间,但相应的查找时间会增大,这会影响像get和put的操作
Hashtable是同步的。他可以存储重载由Object定义的hashCode()和equals()方法的对象。hashCode()方法计算和返回对象的散列码。当然,equals()方法比较两个对象。
Hashtable的构造方法如下:Hashtable();
Hashtable(int size);
Hashtable(int size,float fillRatio);
//该散列表具有size指定的原始大小和由fillRatio指定的填充比介于0.0和1.0之间
HashTable(Map m)//创建一个由m中的元素初始化的散列表
(2)HashMap哈希映射类
HashMap将“键/值”对存储到散列表中。所以HashMap中用于散列和查找的只能是主关键字,其他的次关键字不能用于散列或查找。HashMap和Hashtable类似,不同之处在于HashMap是非同步的,并且允许null,即可有null value和null key。HashMap任然使用哈希函数来计算关键字的哈希码,并存储在对应的位置上,所以记录之间是无序的,但他的存储和查找都很快,远远超过了其他类型的集合。
6.区别:
(1)Hashtable和HashMap的区别:
HashMap是Hashtable的轻量级实现(非线程安全的实现),不是同步的,两者都完成了Map的接口,主要区别在于HashMap允许空键值对,由于其实非线程安全,效率可能高于Hashtable。
HashMap是Java1.2引进的Map interface的一个实现,而Hashtable继承自Dictionary类(字典类)。
Hashtable是线程安全的,即同步(synchronize)的,且不允许空键值对
(2)heap和Stack的区别:
栈是一种线性集合,是自动分配变量以及函数调用时所使用的一些空间。地址是由高到低减少的其添加和删除元素的操作应同步完成。栈按照后进先出的方式进行处理。堆是栈的一个组成元素,他是由malloc之类的函数分配的空间所在地,地址是由低到高增长的。
(3)List、Map、Set3个接口存取元素时各有什么特点?
List以特定次序来持有元素,可有重复元素。Set无法拥有重复元素和内部排序(TreeSet)。Map保存key-value值,value可以多指,但是key唯一
分享到:
相关推荐
对于java中集合框架的详细解释说明,对于java开发中集合这一块不太清楚的适合学习
Java集合框架是Java编程语言中一个非常重要的组成部分,它为开发者提供了存储和管理对象的统一方式。这个框架包括了一系列接口、抽象类以及实现类,帮助程序员处理各种数据结构,如列表、集合、映射等。 首先,我们...
Java集合框架中的容器主要包括Collection、List、Set和Map四个主要接口。 1.1.2 **容器的分类** - **Collection**:是最基本的接口,所有单值容器的基类,如List和Set都继承自Collection。 - **List**:有序的...
6.java集合框架.zip6.java集合框架.zip6.java集合框架.zip6.java集合框架.zip6.java集合框架.zip6.java集合框架.zip6.java集合框架.zip6.java集合框架.zip6.java集合框架.zip6.java集合框架.zip6.java集合框架.zip6....
5. **Iterator**: 集合框架中的迭代器接口,用于遍历集合中的元素,提供了`next()`和`remove()`等方法。使用迭代器可以避免`ConcurrentModificationException`。 6. **Collections**: 这是一个包含各种集合操作的...
xmind格式的Java集合框架学习导图,包括Collection接口/Map接口以及具体实现类。 同样包含大厂面试题,也在导图中有所体现。 能学到什么: 更加成体系的知识框架,更加全面的、系统的知识。 思维导图: 思维导图具有...
在Java集合框架中,主要有六种核心接口:`Collection`, `Set`, `List`, `Queue`, `Deque`, 和 `Map`。此外,还有五个抽象类以及多个实现类,它们共同构成了Java集合框架的基础。 #### 二、核心接口介绍 1. **`...
7. **多态**:Java集合框架中的多态性体现在,所有实现了同一接口的类都可以被视为接口类型,这使得我们可以在不关心具体实现的情况下编写通用代码。例如,`List<?> list = new ArrayList(); list.add(new Integer(1...
Java集合框架是Java编程中不可或缺的一部分。通过理解这些接口和类的特性及其相互间的关系,可以更高效地编写出健壮的应用程序。同时,合理利用抽象类和迭代器等工具能够进一步提高代码的质量和可维护性。
JAVA学习 Java集合框架.ppt
集合是将多个元素组成一个单元的...Java集合框架,为我们提供了一套性能优良、使用方便的接口和类,我们不必再重新发明轮子,只需学会如何使用它们,就可以处理实际应用中出现的问题了Java集合框架位于java.util包中
面渣逆袭 Java 集合框架篇.pdf面渣逆袭 Java 集合框架篇.pdf面渣逆袭 Java 集合框架篇.pdf面渣逆袭 Java 集合框架篇.pdf面渣逆袭 Java 集合框架篇.pdf面渣逆袭 Java 集合框架篇.pdf面渣逆袭 Java 集合框架篇.pdf面渣...
在集合框架中,枚举可用于创建固定大小的集合,如EnumSet和EnumMap。EnumSet是高效且类型安全的集合,适用于存储枚举类型;EnumMap则以枚举类型为键,提供快速访问和操作。 在PPT详解中,可能会详细讲述以下内容: ...
在集合框架中,还有其他关键接口和类,例如`Iterator`用于遍历集合,`Comparator`用于自定义排序规则,以及`EnumSet`和`EnumMap`针对枚举类型的优化集合实现。`Collections`和`Arrays`工具类提供了许多静态方法,...
JAVA常用集合框架讲解JAVA常用集合框架讲解JAVA常用集合框架讲解JAVA常用集合框架讲解JAVA常用集合框架讲解JAVA常用集合框架讲解JAVA常用集合框架讲解JAVA常用集合框架讲解JAVA常用集合框架讲解JAVA常用集合框架讲解
一个扑克游戏,用于Java集合框架练习一个扑克游戏,用于Java集合框架练习 一个扑克游戏,用于Java集合框架练习一个扑克游戏,用于Java集合框架练习 一个扑克游戏,用于Java集合框架练习一个扑克游戏,用于Java集合...
这篇学习笔记将深入探讨Java集合框架的基础概念、主要类库以及常见应用场景。 首先,Java集合框架分为两种基本类型:List(列表)和Set(集)。List接口代表有序的集合,允许重复元素,如ArrayList和LinkedList;而...