java-Collection类-各实现类用途总结

Collection接口:集合,下面有两大分支,List和Set,期中List是有序队列,元素可以重复,Set是集合,元素不能重复。

AbstractCollection抽象类:实现了Collection大部分的接口。
AbstractList抽象类:继承了AbstractCollection抽象类。AbstractSet抽象类:同样继承了AbstractCollection抽象类。
List和Set实现类都分别继承了AbstractList和AbstractSet抽象类。

List类的实现类常用的是LikedList、ArrayList、Vector和Stack;
LinkedList:继承了AbstractSequence,是一个双向链表。可以当做堆栈、队列或者双向队列使用,支持序列化。
ArrayList:是一个数组队列,相当于动态数组,提供了添加、修改、删除和遍历功能,是非线程安全的。建议单线程使用ArrayList,多线程使用Vector或者CopyOnWriteArrayList。
Vector:是一个矢量队列,与ArrayList类似,但是属于线程安全的。
Stack:栈,先进后出,继承于Vector。

ArrayList和LinkedList区别
ArrayList可以看做数组,可以快速随机访问,插入对象的速度慢,整个数组要后移操作复杂。
LinkedList可以看做链表,插入删除数据相当快速方便,不能随机访问,只能遍历查找,随机读取速度慢。

Map接口:映射接口,Map中存储的内容是键值对(key—value)
Map接口的实现类:TreeMap、HashMap、WeakHashMap和HashTable
TreeMap:有序的键值对,通过红黑树实现的,可用于给Map集合中的键进行排序,非线程安全。
HashMap:是基于“拉链法”实现的散列表,键值对,但不保证次序,非线程安全。
Hashtable:是基于“拉链法”实现的散列表,线程安全
WeakHashMap:基于“拉链法”实现的散列表,弱键。当“弱键”被GC回收时,它对应的键值对也会被从WeakHashMap中删除;而HashMap中的键是强键

Set接口的实现类有HashSet类和TreeSet类

HashSet类:依赖于HashMap实现,HashSet元素也是无序的。

TreeSet类:依赖于TreeMap实现,TreeSeet元素是有序的。

时间: 2024-10-11 12:16:40

java-Collection类-各实现类用途总结的相关文章

I学霸官方免费教程三十五:Java集合框架之Collection接口和Collections类

Collection接口 Collection接口是List和Set接口的父接口,其中主要定义了一些集合基本操作的方法,包括与Iterator之间的关系List  extends  CollectionArrayList  implements  ListLinkedList  implements  ListVector  implements  ListSet  extends  CollectionHashSet  implements  SetSortedSet  extends  Se

《Effective Java》第4章 类和接口

第13条:使类和成员的可访问性最小化 第一规则很简单:尽可能地使每个类或者成员不被外界访问.换句话说.应该使用与你正在编写的软件的对应功能相一致的.尽可能最小的访问级别. 对于顶层的(非嵌套的)类和接口,只有两种可能的访问级别:包级私有的(package-private)和公有的(public).如果你用public修饰符声明了顶层类或者接口,那它就是公有.否则,它将是包级私有的.如果类或者接口能够被做成包级私有的,它就应该被做成包级私有的.通过把类或者接口做成包级私有,它实际上成了这个包的实现

近来的java小总结(2.1):类的知识的查漏补缺

首先,我是一名新手,所以,要带着批判的眼光来看下面的文章   这篇文章说了些什么? 这文章是我近来8.6号来在编程思想上打的代码,从0~200页的源码接近到在这里,下文正是总结这0~200页的的知识,涉及到接口,内部类.初始化,数值计算的一些细节.此文章不会一下子写完,可能隔一天可能再补下来.因为代码确实有点多.. 注意 1 我的注释不一定正确(不过各小标题和代码一定是正确的,因为是书本上的原话,但是注释不一定正确),如果你确信我的内容的话,你可能会损失很大,因为我只是个菜鸟,我只是来补救一些知

黑马程序员——Java基础---集合框架工具类

黑马程序员——Java基础<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------ 一.概述 Java为操作Set.List和Map提供了一系列工具类,主要有Collections和Arrays.这两个工具类的特点:类中的方法都是静态的,不需要创建对象,直接使用类名调用即可.Collections:是集合对象

java中常用的工具类(二)

下面继续分享java中常用的一些工具类,希望给大家带来帮助! 1.FtpUtil Java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71

java中常用的工具类

一.String工具类 package com.itjh.javaUtil; import java.util.ArrayList; import java.util.List; /** * * String工具类. <br> * * @author 宋立君 * @date 2014年06月24日 */ public class StringUtil { private static final int INDEX_NOT_FOUND = -1; private static final St

Java语言中的static类和类与类之间的总结

一.static类 1.static类的定义  static被称为静态,可以用来修饰类的属性或方法.  如果类的某个属性,不管创建多少个对象,属性的存储空间只有唯一的一个,那么这个属性就应该用static修饰,被static修饰的属性称为静态属性.  static属性可以使用对象调用,也可以直接用类名调用.  静态属性的类的所以对象共享的,即不管创建了多少个对象,静态属性在内存中只有一个. public class Employee{ private String name;----------

java学习笔记7--抽象类与抽象方法

1.终结类与终结方法 被final修饰符修饰的类和方法,终结类不能被继承,终结方法不能被当前类的子类重写 终结类的特点:不能有派生类 终结类存在的理由: 安全: 黑客用来搅乱系统的一个手法是建立一个类的派生类,然后用他们的类代替原来的类 设计: 你认为你的类是最好的或从概念上你的类不应该有任何派生类 终结方法的特点:不能被派生类覆盖 终结方法存在的理由: 对于一些比较重要且不希望子类进行更改的方法,可以声明为终结方法.可防止子类对父类关键方法的错误重写,增加了代码的安全性和正确性 提高运行效率.

java使用泛型实现Bean类和Map的相互转换

java使用泛型实现Bean类和Map的相互转换,使用泛型可以这带来了很多好处: 首要就是类型安全, Java 程序的类型安全.通过知道使用泛型,这些假设就只存在于程序员的头脑中(或者如果幸运的话,还存在于代码注释中).       泛型允许编译器实施这些附加的类型约束.类型错误现在就可以在编译时被捕获了,而不是在运行时当作 ClassCastException 展示出来.   将类型检查从运行时挪到编译时有助于您更容易找到错误,并可提高程序的可靠性. 消除强制类型转换. 泛型的一个附带好处是,

关于java同步包中ConcurrentLinkedQueue类的深入分析与理解

一,官方描述 一个基于连接节点的无界线程安全队列.这个队列的顺序是先进先出.队列头部的元素是留在队列中时间最长的,队列尾部的元素是留在队列中时间最短的.新元素被插入到元素的尾部,队列从队列的头部检索元素.当许多线程共享访问同一个集合时,这个类是不二选择.这个队列不允许有null元素. 这个实现基于一种被描述为简单,快速,实用的非阻塞和阻塞公布队列算法而提供的一种有效的空闲等待算法. 注意,不像大多数集合,size方法的操作不是常量时间的,由于是异步队列,决定了元素的数量需要遍历真个元素集. 这个