一、List:、有顺序以线性方式存储,可以存放重复对象

线程安全方法:List list = Collections.synchronizedList(new LinkedList(...));

LinkedList:双向链表实现存储  索引数据慢插入数度较快  线程不安全(比安全性能好)

ArrayList:数组方式存储数据  索引数据快插入数据慢  线程不安全

Vector:数组方式存储数据  索引数据快插入数据慢  线程安全

Stack:继承自Vector,实现一个后进先出的堆栈

二、Set:无顺序,不包含重复的元素

HashSet:为快速查找设计的Set。存入HashSet的对象必须定义hashCode()。

TreeSet: 保存次序的Set, 底层为树结构。使用它可以从Set中提取有序的序列。

LinkedHashSet:具有HashSet的查询速度,且内部使用链表维护元素的顺序(插入的次序)。于是在使用迭代器遍历Set时,结果会按元素插入的次序显示。

三、Map:键必须是唯一

同步方法:Map m = Collections.synchronizedMap(new TreeMap(...));

Hashtable:基于散列表的实现  允许空键空值  线程安全

HashMap:基于散列表的实现  允许空键空值  线程不安全  (与Hashtable基本一致)

TreeMap: 基于红黑树数据结构的实现  不允许空键空值  线程不安全

WeakHashMap:改进的HashMap,它对key实行“弱引用”,如果一个key不再被外部所引用,那么该key可以被GC回收。

在除需要排序时使用TreeSet,TreeMap外,都应使用HashSet,HashMap,因为他们的效率更高。

  1. 1) Collection
  2. 一组"对立"的元素,通常这些元素都服从某种规则
  3.   1.1) List必须保持元素特定的顺序
  4.   1.2) Set不能有重复元素
  5.   1.3) Queue保持一个队列(先进先出)的顺序
  6. 2) Map
  7. 一组成对的"键值对"对象

Set集合类应用场景:

  1. 1) HashSet的性能总是比TreeSet好(特别是最常用的添加、查询元素等操作),因为TreeSet需要额外的红黑树算法来维护集合元素的次序。只有当需要一个保持排序的Set时,才应该使用TreeSet,否则都应该使用HashSet
  2. 2) 对于普通的插入、删除操作,LinkedHashSetHashSet要略慢一点,这是由维护链表所带来的开销造成的。不过,因为有了链表的存在,遍历LinkedHashSet会更快
  3. 3) EnumSet是所有Set实现类中性能最好的,但它只能保存同一个枚举类的枚举值作为集合元素
  4. 4) HashSetTreeSetEnumSet都是"线程不安全"的,通常可以通过Collections工具类的synchronizedSortedSet方法来"包装"Set集合。
  5. SortedSet s = Collections.synchronizedSortedSet(new TreeSet(...));

List集合类应用场景:

  1. 1. java提供的List就是一个"线性表接口"ArrayList(基于数组的线性表)、LinkedList(基于链的线性表)是线性表的两种典型实现
  2. 2. Queue代表了队列,Deque代表了双端队列(既可以作为队列使用、也可以作为栈使用)
  3. 3. 因为数组以一块连续内存来保存所有的数组元素,所以数组在随机访问时性能最好。所以的内部以数组作为底层实现的集合在随机访问时性能最好。
  4. 4. 内部以链表作为底层实现的集合在执行插入、删除操作时有很好的性能
  5. 5. 进行迭代操作时,以链表作为底层实现的集合比以数组作为底层实现的集合性能好

=======================================================================================================================================

Collection迭代:

  1. import java.util.Collection;
  2. import java.util.HashSet;
  3. import java.util.Iterator;
  4.  
  5. public class Main {
  6.  
  7. public static void main(String[] args) {
  8. Collection books = new HashSet();
  9. books.add("11");
  10. books.add("22");
  11. books.add("33");
  12.  
  13. //获取books集合对应的迭代器
  14. Iterator it = books.iterator();
  15. while(it.hasNext())
  16. {
  17. //it.next()方法返回的数据类型是Object类型,
  18. //需要强制类型转换
  19. String book = (String)it.next();
  20. System.out.println(book);
  21. if (book.equals("11"))
  22. {
  23. //从集合中删除上一次next方法返回的元素
  24. it.remove();
  25. }
  26. //对book变量赋值,不会改变集合元素本身
  27. book = "测试字符串";
  28. }
  29. System.out.println(books);
  30. }
  31. }
  1. 11
  2. 22
  3. 33
  4. [22, 33]

List的迭代:

  1. import java.util.ArrayList;
  2. import java.util.List;
  3. import java.util.ListIterator;
  4.  
  5. public class Main {
  6.  
  7. public static void main(String[] args) {
  8. String[] books = {
  9. "11",
  10. "22"
  11. };
  12. List bookList = new ArrayList();
  13. for (int i = 0; i < books.length ; i++ )
  14. {
  15. bookList.add(books[i]);
  16. }
  17. ListIterator lit = bookList.listIterator();
  18. while (lit.hasNext())
  19. {
  20. System.out.println(lit.next());
  21. lit.add("-------分隔符-------");
  22. }
  23. System.out.println("=======下面开始反向迭代=======");
  24. while(lit.hasPrevious())
  25. {
  26. System.out.println(lit.previous());
  27. }
  28. }
  29. }
  1. 11
  2. 22
  3. =======下面开始反向迭代=======
  4. -------分隔符-------
  5. 22
  6. -------分隔符-------
  7. 11

http://www.cnblogs.com/LittleHann/p/3690187.html

http://blog.csdn.net/speedme/article/details/22398395

Java集合 List,Set,Map的更多相关文章

  1. Java集合框架之map

    Java集合框架之map. Map的主要实现类有HashMap,LinkedHashMap,TreeMap,等等.具体可参阅API文档. 其中HashMap是无序排序. LinkedHashMap是自 ...

  2. Java 集合系列 15 Map总结

    java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...

  3. Java 集合系列 08 Map架构

    java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...

  4. Java集合框架之Map接口浅析

    Java集合框架之Map接口浅析 一.Map接口综述: 1.1java.util.Map<k, v>简介 位于java.util包下的Map接口,是Java集合框架的重要成员,它是和Col ...

  5. 【JAVA集合框架之Map】

    一.概述.1.Map是一种接口,在JAVA集合框架中是以一种非常重要的集合.2.Map一次添加一对元素,所以又称为“双列集合”(Collection一次添加一个元素,所以又称为“单列集合”)3.Map ...

  6. Java集合框架中Map接口的使用

    在我们常用的Java集合框架接口中,除了前面说过的Collection接口以及他的根接口List接口和Set接口的使用,Map接口也是一个经常使用的接口,和Collection接口不同,Map接口并不 ...

  7. java集合框架07——Map架构与源代码分析

    前几节我们对Collection以及Collection中的List部分进行了分析,Collection中还有个Set,因为Set是基于Map实现的,所以这里我们先分析Map,后面章节再继续学习Set ...

  8. 「 深入浅出 」java集合Collection和Map

    本系列文章主要对java集合的框架进行一个深入浅出的介绍,使大家对java集合有个深入的理解. 本篇文章主要具体介绍了Collection接口,Map接口以及Collection接口的三个子接口Set ...

  9. Java集合中的Map接口

    jdk1.8.0_144 Map是Java三种集合中的一种位于java.util包中,Map作为一个接口存在定义了这种数据结构的一些基础操作,它的最终实现类有很多:HashMap.TreeMap.So ...

随机推荐

  1. 利用openSSL 生成RSA公钥和密钥

    安装openssl for Windows. 之后开管理员控制台,打开openSSL 我的是 C:\OpenSSL-Win32\bin\openssl.exe 生成1024位的私钥,不指定的话默认20 ...

  2. 找1到n所有整数出现1的个数

    编程之美2.4 n=12时,1,11,12这3个数包含1,所以1的个数是5. Line 9是为了防止factor溢出. #include <iostream> #include <s ...

  3. 5. Configure the Image Service

    Controller Node: 1. sudo apt-get install glance python-glanceclient   2. sudo vi /etc/glance/glance- ...

  4. ImageMagick jmagick 安装

    在安装ImageMagick之前,请检查下面包已经安装 tiff-3.9.5.tar.gz         (rpm -qa|grep libtiff检查是否已经安装) libpng-1.2.46.t ...

  5. .NET开发问题汇总

    问题一: mvc 部署到iis 提示错误未能加载文件或程序集System.Web.Http.WebHost 解决方案: Nuget程序包管理 —>程序包管理控制台,运行以下命令即可:Update ...

  6. 【原】Windows下Nexus搭建Maven私服

    一.Maven安装 详见Java开发环境搭建 二.Nexus安装 2.1.下载 地址:http://www.sonatype.org/nexus/go/ 选择OSS(ZIP)版本 2.2.安装 将安装 ...

  7. visio studio2008 删除最近的项目

    visio studio2008  删除最近的项目 创建move.bat: @echo off @REG Delete HKCU\Software\Microsoft\VisualStudio\9.0 ...

  8. PHP 开发 APP 接口学习笔记与总结 - [ Linux ] 定时任务

    定时任务可以使用 crontab 命令来设定: crontab -e #编辑某个用户的cron 服务 crontab -l  #列出某个用户cron 服务的详细内容 crontab -r  #删除某个 ...

  9. 【SIGGRAPH 2015】【巫师3 狂猎 The Witcher 3: Wild Hunt 】顶级的开放世界游戏的实现技术。

    [SIGGRAPH 2015][巫师3 狂猎 The Witcher 3: Wild Hunt ]顶级的开放世界游戏的实现技术 作者:西川善司 日文链接  http://www.4gamer.net/ ...

  10. 02/07/2106 @ 6:28am (UTC)

    <?php echo pow(2,32); 4294967296 http://www.unixtimestamp.com/index.php 4294967296 Is equivalent ...