java的Collection以及Map

本文主要介绍java常用的数据结构。
1、Collection接口以及其子接口和实现类
这个接口是Set和List的父接口,List是有序可重复集,set是无序不可重复集。
ArrayList和LinkedList区别:ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。 (LinkedList是双向链表,有next也有previous)。
Vector和ArrayList区别:Vector是线程(Thread)同步(Synchronized)的,所以它也是线程安全的,而Arraylist是线程异步(ASynchronized)的,是不安全的。一般使用ArrayList较多,需要同步的地方可以另外加锁。
Stack:栈结构
HashSet:元素的哈希值是通过元素的hashcode方法 来获取的, HashSet首先判断两个元素的哈希值,如果哈希值一样,接着会比较equals方法 如果 equals结果为true ,HashSet就视为同一个元素。如果equals 为false就不是同一个元素。所以对于自定义的用于存放于集合中的类,需要重写hashcode和equals函数。
SortedSet:是一个接口,排序的集合,递增顺序。
TreeSet:实现SortedSet,使用红黑树来实现。比较器需要自己实现。参考这篇文章:
http://www.importnew.com/18280.html
2、Map接口以及其子接口和实现类
Map接口中键和值一一映射. 可以通过键来获取值。
HashMap与HashSet类似,都需要重写hashcode和equals函数。
SortedMap和TreeMap:与TreeSet类似的是,TreeMap也是基于红黑树对TreeMap中所有key进行排序,从而保证TreeMap中所有key-value对处于有序状态。
Hashtable:Hashtable 是一个散列表,它存储的内容是键值对(key-value)映射。Hashtable 继承于Dictionary,实现了Map、Cloneable、java.io.Serializable接口。Hashtable 的函数都是同步的,这意味着它是线程安全的。Hashtable和HashMap类似,但是还是有些区别的,区别如下:
https://blog.csdn.net/fujiakai/article/details/51585767
Properties:用于读取Java的配置文件。

java的Collection以及Map