2022java集合总结.docx
《2022java集合总结.docx》由会员分享,可在线阅读,更多相关《2022java集合总结.docx(33页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、2022java集合总结篇一:Java集合类总结2 Java中集合类用法总结 Collection List LinkedList ArrayList (异步,线程担心全,空间用完时自动增长原容量一半) Vector (同步,线程平安,空间用完时自动增长原容量一倍) Stack Set HashSet TreeSet Map Hashtable HashMap WeakHashMap TreeMap Map接口: | + - WeakHashMap: 以弱键 实现的基于哈希表的 Map。在 WeakHashMap 中,当某个键不再正常运用时,将自动移除其条目。更精确地说,对于一个给定的键,其映
2、射的存在并不阻挡垃圾回收器对该键的丢弃,这就使该键成为可终止的,被终止,然后被回收。丢弃某个键时,其条目从映射中有效地移除,因此,该类的行为与其他的 Map 实现有所不同。此实现不是同步的。 | + - TreeMap:该映射依据其键的自然依次进行排序,或者依据创建映射时供应的 Comparator 进行排序,详细取决于运用的构造方法。此实现不是同步的。 | + - HashMap:基于哈希表的 Map 接口的实现。此实现供应全部可选的映射操作,并允许运用 null 值和 null 键。(除了非同步和允许运用 null 之外,HashMap 类与 Hashtable 大致相同。)此类不保证映射
3、的依次,特殊是它不保证该依次恒久不变。此实现不是同步的。 | +- Sorted Map: 进一步供应关于键的总体排序 的 Map。该映射是依据其 键的自然依次进行排序的,或者依据通常在创建有序映射时供应的 Comparator 进行排序。对有序映射的 collection 视图(由 entry Set、keyset 和 values 方法返回)进行迭代时,此依次就会反映出来。要采纳此排序方式,还须要供应一些其他操作(此接口是 Sorted Set 的对应射)。 Collection接口: | + - Set接口:一个不包含重复元素的 collection。更正式地说,set 不包含满意 e1
4、.equals(e2) 的元素对 e1 和 e2,并且最多包含一个 null 元素。正如其名称所示意的,此接口仿照了数学上的 set 抽象。 | |+ - HashSet:此类实现 Set 接口,由哈希表(事实上是一个 HashMap 实例)支持。它不保证 set 的迭代依次;特殊是它不保证该依次恒久不变。此类允许运用 null 元素。此类为基本操作供应了稳定性能,此实现不是同步的。 | |+ - LinkedHashSet:具有可预知迭代依次的 Set 接口的哈希表和链接列表实现。此实现与 HashSet 的不同之外在于,后者维护着一个运行于全部条目的双重链接列表。此链接列表定义了迭代依次,
5、即根据将元素插入到 set中 的依次(插入依次)进行迭代。留意,插入依次不 受在 set 中重新插入的 元素的影响。此实现不是同步的。 | |+ - TreeSet:基于 TreeMap 的 NavigableSet 实现。运用元素的自然依次对元素进行排序,或者依据创建 set 时供应的 Comparator 进行排序,详细取决于运用的构造方法。此实现为基本操作(add、remove 和 contains)供应受保证的 log(n) 时间开销。此实现不是同步的。 | + - List接口:有序的 collection(也称为序列)。此接口的用户可以对列表中每个元素的插入位置进行精确地限制。用户
6、可以依据元素的整数索引(在列表中的位置)访问元素,并搜寻列表中的元素。 | + - ArrayList:List 接口的大小可变数组的实现。实现了全部可选列表操作,并允许包括 null 在内的全部元素。除了实现 List 接口外,此类还供应一些方法来操作内部用来存储列表的数组的大小。(此类大致上等同于Vector 类,除了此类是不同步的。)每个 ArrayList 实例都有一个容量。该容量是指用来存储列表元素的数组的大小。它总是至少等于列表的大小。随着向 ArrayList 中不断添加元素,其容量也自动增长。并未指定增长策略的细微环节,因为这不只是添加元素会带来分摊固定时间开销那样简洁。此实现
7、不是同步的。| + - LinkedList:List 接口的链接列表实现。实现全部可选的列表操作,并且允许全部元素(包括 null)。除了实现 List 接口外,LinkedList 类还为在列表的开头及结尾 get、remove 和 insert 元素供应了统一的命名方法。这些操作允许将链接列表用作堆栈、队列或双端队列。供应先进先出队列操作(FIFO)。此实现不是同步的。 | + - Vector:Vector 类可以实现可增长的对象数组。与数组一样,它包含可以运用整数索引进行访问的组件。但是 ,Vector 的大小可以依据须要增大或缩小,以适应创建 Vector 后进行添加或移除项的操作
8、。此实现是同步的. 1. Collection的功能 下面这张表给出了Collection的全部功能,也就是你能用Set和List做什么事(不包括从Object自动继承过来的方法)。(List还有一些额外的功能。)Map不是继承Collection的,所以我们会区分对待。 boolean add(Object):确保容器能持有你传给它的那个参数。假如没有把它加进去,就返回false。(这是个“可选”的方法,本章稍后会再作说明。) boolean addAll(Collection):加入参数Collection所含的全部元素。只要加了元素,就返回true。 void clear():清除容器所
9、保存的全部元素。(“可选”) boolean contains(Object):假如容器持有参数Object,就返回true。 boolean containsAll(Collection):假如容器持有参数Collection所含的全部元素,就返回true。 boolean isEmpty():假如容器里面没有保存任何元素,就返回true。 Iterator iterator():返回一个可以在容器的各元素之间移动的Iterator。 boolean removeAll(Collection):删除容器里面全部参数Collection所包含的元素。只要删过东西,就返回true。(“可选”)
10、boolean retainAll(Collection):只保存参数Collection所包括的元素(集合论中“交集”的概念)。假如发生过改变,则返回true。(“可选”) int size():返回容器所含元素的数量。 Object toArray():返回一个包含容器中全部元素的数组。 Object toArray(Object a):返回一个包含容器中全部元素的数组,且 这个数组不是一般的Object数组,它的类型应当同参数数组a的类型相同(要做类型转换)。 留意,这里没有能进行随机访问的get()方法。这是因为Collection还包括Set。而Set有它自己的内部依次(因此随即访问
11、事毫无意义的)。所以假如你要检查Collection的元素,你就必需运用迭代器。 2List的功能 List的基本用法事相当将但的。虽然绝大多数时候,你只是用add()加对象,用get()取对象,用iterator()获得这个序列的Iterator,但List还有一些别的很有用的方法。 事实上有两种List:擅长对元素进行随机访问的,较常用的ArrayList,和更强大的LinkedList。LinkedList不是为快速的随机访问而的,但是它却有一组更加通用的方法。 Lisk(接口):List的最重要的特征就是有序;它会确保以肯定的依次保存元素。List在Collection的基础上添加了大
12、量方法,使之能在序列中间插入和删除元素。(只对LinkedList举荐运用。)List可以制造ListIterator对象,你除了能用它在List的中间插入和删除元素之外,还能用它沿两个方法遍历List。 ArrayList*:一个用数组实现的List。能进行快速的随机访问,但是往列表中间插入和删除元素的时候比较慢。ListIterator只能用在反向遍历ArrayList的场合,不要用它来插入和删除元素,因为相比LinkedList,在ArrayList里面用ListIterator的系统开销比较高。 LinkedList:对依次访问进行了优化。在List中间插入和删除元素的代价也不高。随机
13、访问的速度相对较慢。(用ArrayList吧。)此外它还有addFirst(),addLast(),getFirst(),getLast(),removeFirst()和removeLast()等方法(这些方法,接口和基类均未定义),你能把它当成栈(stack),队列(queue)或双向队列(deque)来用。 记住,容器只是一个存储对象的盒子。假如这个笑盒子能帮你解决全部的问题,那你就用不着取管它事怎么实现的(在绝大多数状况下,这是运用对象的基本概念)。假如开发环境里面还有一些别的,会造成固定的性能开销的因素存在,那么ArrayList和LinkedList之间的性能差别就会变得不那么重要了
14、。你只须要它们中的一个,你甚至可以想象有这样一种“完备”的抽象容器;它能依据用途,自动地切换其底层的实现。 用LinkedList做一个栈 “栈(stack)”有时也被称为“后进先出”(LIFO)的容器。就是说,最终一个被“压”进栈中的东西,会第一个“弹”出来。同其他Java容器一样,压进去和弹出来的东西都是Object,所以除非你只用Object的功能,否则就必需对弹起来的东西进行类型转换。 LinkedList的方法能干脆实现栈的功能,所以你完全可以不写Stack而干脆运用LinkedList。 假如你只想要栈的功能,那么继承就不太合适了,因为继承出来的是一个拥有LinkedList的全部
15、方法的类。 用LinkedList做一个队列 队列(queue)是一个“先进先出”(FIFO)容器。也就是,你把一端把东西放进去,从另一端把东西取出来。所以你放东西的依次也就是取东西的依次。LinkedList有支持队列的功能的方法,所以它也能被当作Queue来用。 还能很轻易地用LinkedList做一个deque(双向队列)。它很像队列,只是你可以从随意一端添加和删除元素。 Vector类 Vector特别类似ArrayList,但是Vector是同步的。由Vector创建的 Iterator,虽然和ArrayList创建的Iterator是同一接口,但是,因为Vector是同步的,当一个
16、Iterator被创建而且正在被运用,另一个线程变更了Vector的状态(例如,添加或删除了一些元素),这时调用Iterator的方法时将抛出ConcurrentModificationException,因此必需捕获该异样。 Stack 类 Stack继承自Vector,实现一个后进先出的堆栈。Stack供应5个额外的方法使得Vector得以被当作堆栈运用。基本的push和pop方法,还有peek方法得到栈顶的元素,empty方法测试堆栈是否为空,search方法检测一个元素在堆栈中的位置。Stack刚创建后是空栈。 3Set的功能 Set的接口就是Collection的,所以不像那两个Li
17、st,它没有额外的功能。事实上Set确的确实就是一个Collection只不过行为方式不同罢了。(这是继承和多态性的完备运用:表达不同地行为。)Set会拒绝持有多个具有相同值的对象的实例(对象的“值”又是由什么确定的呢?这个问题比较困难,我们以后会讲)。 Set(接口):加入Set的每个元素必需是唯一的;否则,Set是不会把它加进 篇二:【java】集合框架 【java总结】集合框架 Collection是集合框架层次结构中的根接口。Collection 表示一组对象,这些对象也称为 collection 的元素。一些 collection 允许有重复的元素,而另一些则不允许。一些 colle
18、ction 是有序的,而另一些则是无序的。Collection接口下有最常用的接口为List跟Set。须要留意的是,Map并没有实现Collection接口。 List接口实现类ArrayList 优点:类似数组的形式进行存储,因此它的随机访问速度极快。 缺点:不适合于在线性表中间须要频繁进行插入和删除操作。因为每次插入和删除都须要移动数组中的元素,它是用数组存储元素的,这个数组可以动态创建,假如元素个数超过了数组的容量,那么就创建一个更大的新数组,并将当前数组中的全部元素都复制到新数组中。 view plain copy span style=font-size:14px;public cl
19、ass ArrayListTest public static void main(String args) ListString arrayList=new ArrayListString(); arrayList.add(Welcome); arrayList.add(to); arrayList.add(java); /把ArrayList变为数组相关的内容进行遍历 String strArray=new String; arrayList.toArray(strArray); for(int i=0;istrArray.length;i+)System.out.println(strA
20、rray); /运用迭代器进行ArrayList遍历 IteratorString iter=arrayList.iterator(); while(iter.hasNext() System.out.println(iter.next(); /span List接口实现类LinkedList 优点:适合于在链表中间须要频繁进行插入和删除操作。 缺点: 随机访问速度较慢。查找一个元素须要从头起先一个一个的找。此类实现 Deque 接口,为 add、poll 供应先进先出队列操作,以及其他堆栈和双端队列操作LinkedList是在一个链表中存储元素。 view plain copy span s
21、tyle=font-size:14px;public class LinkedListTest public static void main(String args) ListString linkedList=new LinkedListString(); /运用ForEach遍历linkedList String strArray2=new String; linkedList.toArray(strArray2); for(int i=0;istrArray2.length;i+)System.out.println(strArray2); /foreach遍历LinkedList f
22、or(String str:linkedList) System.out.println(str); /运用迭代器进行ArrayList遍历 IteratorString iter=linkedList.iterator(); while(iter.hasNext() System.out.println(iter.next(); /span List接口实现类Vector: Vector运用了关键字synchronized将访问和修改向量的方法都变成同步的了,所以对于不须要同步的应用程序来说,类ArrayList比类Vector更高效。 相同点: 都继承于AbstractList,并且实现L
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022 java 集合 总结
限制150内