java高薪之路__003_集合
Java集合可分为Collection和Map两大体系
Collection接口
|---- Set: 元素无序、不可重复
|---- List: 元素有序、可重复 (动态数组)
|---- Queue:元素无序、可重复,队列
Map接口
|---- 具有键值的映射关系(key - value),key是用set来存的,所以要不能重复,value可以重复
|---- HashMap
|---- LinkedHashMap
|---- HashTable
|---- Properties
|---- SortedMap(这是一个接口,继承了Map接口)
|---- TreeMap
在这张图中的SortedSet也是一个接口,继承了Set接口,然后TreeSet实现了SortedSet接口
注:为LinkedHashSet
List
ArrayList和Vector的显著区别是:ArrayList是线程不安全的,当多个线程访问同一个ArrayList集合时,如果有超过一个线程修改了ArrayList集合,则程序必须手动保证该集合的同步性。但Vector是线程安全的,无需保证集合的同步性。因为Vector是线程安全的,所以Vector的性能要比ArrayList集合的性能要低。实际上,即使需要保证List集合的线程安全,也同样不推荐使用Vector 在HashSet集合中,判断两个元素相同的标准是:两个对象通过equals()方法相等,且HashCode()方法的返回值也相等。如果有两个元素通过equals()方法比较相等,而HashCode()的返回值不同,HashSet会将这两个对象保存在不同的地方
Map
HashMap和Hashtable是Map接口的典型实现类。HashMap和Hashtable存在两点典型区别:
1.Hashtable是一个线程安全的Map实现,但HashMap是线程不安全的实现,所以HashMap比Hashtable的性能更高一些;但如果有多个线程访问同一个Map对象时,使用Hashtable会更好。
2.Hashtable不允许使用null作为key和value,如果试图将null值放进Hashtable中,将会引发NullPointerException异常,但HashMap可以使用null作为key或value。
PS:
A.由于HashMap中的key不能重复,所以HashMap中只能最多有一个key-value对的key为null,但可以有无数多个key-value对的value为null。
B.Hashtable是一个古老的类,他的名字甚至没有遵守java命名规范。与Vector类似,尽量少用Hashtable实现类,即使是需要创建线程安全的Map实现类,也无需使用Hashtable实现类。
C.HashMap和Hashtable判断两个key值相等的的标准是:两个key通过equals()方法比较返回true,两个key的Hashcode值也相等。 LinkHashMap是使用双向链表来维护key-value对的次序(其实只考虑了key的次序),该链表负责维护Map的迭代顺序,迭代顺序与key-value对的插入顺序一致。 Properties是Hashtable的子类,该对象在处理属性文件时十分方便。Prooperties类将Map对象和属性文件关联起来,从而可以将Map对象中的key-value对写入属性文件中,也可以将属性文件中的“属性名=属性值”加载到Map对象中。由于属性文件中的属性名和属性值都是字符串类型,所以Properties里的key、value都是字符串类型的。 正如Set接口派生出SortedSet子接口,SortedSet接口有一个TreeSet实现类一样。Map接口也派生出一个SortedMap子接口,SortedMap接口也有一个TreeMap实现类。
TreeMap就是一个红黑树数据结构,每个key-value对作为红黑树的一个节点。
TreeMap在存储key-value对(节点),需要根据key对节点进行排序。TreeMap保证所有的key-value对处于有序状态。TreeMap有两种排序方式:
自然排序:TreeMap的所有key必须实现Comparable接口,而且所有key必须是同一个类的对象,否则会抛出ClassCastException异常。
定制排序:创建TreeMap时,传入一个Comparator对象,该对象负责对TreeMap中的key进行排序。采用定制排序不要求TreeMap中的key实现Comparator接口
遍历
在此之前需要先了解一个Java8的新特性--Lambda表达式
可以参考这两个地址的描述:
1. http://blog.csdn.net/ioriogami/article/details/12782141
2. http://www.jdon.com/idea/java/10-example-of-lambda-expressions-in-java8.html
然后是所有的遍历操作
参考地址:
1. http://www.cnblogs.com/mercuryli/p/4615230.html
java高薪之路__003_集合的更多相关文章
- java高薪之路__009_网络
1. InetAddress类2. Socket: IP地址和端口号的结合,socket允许程序把网络连接当成一个流,数据在两个socket间通过IO传输, 通信的两端都要有socket. 主动发起通 ...
- java高薪之路__008_Annotation
元注解 共有4种 @Retention 表示需要在什么级别保存该注释信息(生命周期) |--- RetentionPolicy.SOURCE: 停留在java源文件,编译器被丢掉 |--- Reten ...
- java高薪之路__007_反射
参考地址: 1. http://www.cnblogs.com/rollenholt/archive/2011/09/02/2163758.html2. http://www.cnblogs.com/ ...
- java高薪之路__005_IO流
参考地址: 1. http://blog.csdn.net/yczz/article/details/38761237 File类 ObjectInputStream && Objec ...
- java高薪之路__002_异常处理
自定义异常 package learn.JavaBasics.Class; import java.util.Date; /** * 如何自定义一个异常类 * 1. 继承一个现有的异常类 * 2. 提 ...
- java高薪之路__001_类
Java中内部类分四种:成员内部类.局部内部类.静态内部类和匿名内部类.要注意静态内部类的调用方式与其他不同,采用的是类似调用类中的静态属性.静态方法的方式 Multi Level 调用不同类中的相同 ...
- java高薪之路__010_设计模式
设计模式只是一个在构建大型工程时,为了方便更改,添加,查询和管理的一种代码工具,没有必要单独为了设计模式而使用设计模式,使简单的事情复杂化. 总体来说设计模式分为三大类: 1. 创建型模式,共五种 - ...
- java高薪之路__006_多线程
线程的创建有两种方式 package learn.JavaBasics.Class; public class ThreadDemo extends Thread { private static i ...
- java高薪之路__004_泛型
参考地址: 1. http://www.cnblogs.com/lwbqqyumidi/p/3837629.html2. http://www.cnblogs.com/abcwt112/p/47350 ...
随机推荐
- IIS不能对网站添加默认文档(由于权限不足而无法写入配置文件)
IIS7以上版本配置网站时需要手动配置网站目录的文件夹权限 增加"IIS_IUSER"用户的修改权限 但增加后仍然提示“ 由于权限不足无法写入配置文件” 通常是Web.config ...
- SQLSERVER2012 附加数据库重名的问题
SQL2012附加数据库时如何更改数据库名称呢 方法一: 在“附加为”那一栏填写新的数据库名称就可以 方法二: 使用脚本 附加时点击脚本会自动生成附加脚本 直接修改database的名称即可!
- vi基本命令
http://www.cnblogs.com/younggun/p/3190820.html 要记得经常练习
- db2常用命令大全
#显示这个DB2错误的解释信息(SQLSTATE 5位数字)db2 ? 42704 #显示这个SQLCODE的解释信息(SQLCODE 四位数字) db2 ? SQL0204N ##查看数据库指定配置 ...
- Java中的集合框架
概念与作用 集合概念 现实生活中:很多事物凑在一起 数学中的集合:具有共同属性的事物的总体 java中的集合类:是一种工具类,就像是容器,储存任意数量的具有共同属性的对象 在编程时,常常需要集中存放多 ...
- 字节流和字符流(PrintStream类和PrintWiter类)
要想输入和输出各种数据类型,通常要打印输入流PrintStream和PrintWriter.其中,PrintStream操作的是字节,PrintWriter操作的是字符. 1:PrintStream类 ...
- RDIFramework.NET Web版介绍
RDIFramework.NET Web版介绍 B/S结构(Browser/Server,浏览器/服务器模式),是WEB兴起后的一种网络结构模式,WEB浏览器是客户端最主要的应用软件.这种模式统一了 ...
- 移动端html页面布局
记录一下: ---------- 如果设计稿尺寸为 : 96px: 1. rem html{ font-size:62.5%; } 的情况下 : 4.8rem: 2. rem html{ font-s ...
- cell长按出错
错误的原因: *** Terminating app due to uncaught exception 'UIViewControllerHierarchyInconsistency', reaso ...
- C++之路进阶——codevs2492(上帝造题的七分钟 2)
2492 上帝造题的七分钟 2 时间限制: 1 s 空间限制: 64000 KB 题目等级 : 大师 Master 题目描述 Description XLk觉得<上帝造题的七分钟&g ...