[Java容器类划分位两个部分:Collection和Map。 在Collection中,主要有List和Set两个部分。在Set中,每个对象只保留一份,List中又有ArrayList和LinkedList,而Set中又有H
一直对容器的使用很模糊,是时候该总结一下了:
在项目开发中,一般使用的容器有:
Colleaction (Set List ) 接口
Set (HashSet(LinkedHashSet) TreeSet) 括号内为相应的实现类,LinkHashSet类继承了HashSet类
List (LinkedList ArrayList) 括号内为相应的实现类
Map (HashMap(LinkHashMap) TreeMap HashTable) 括号内为相应的实现类 LinkHashMap类继承了HashMap
在项目中何时该使用哪个呢?
1、Set 一个不包含重复元素的 collection。既然元素是不可重复,那怎么比较呢? 这时元素对象要实现equals和hashcode方法。
HashSet 没有顺序,不可重复。而它的子类 LinkedHashSet 会始终保持插入时的顺序。[Java的容器分别有list、map和set list接口下: 一种是基本的ArrayList,其优点在于随机访问元素, 另一种是更强大的LinkedList,它并不是为快速随机访问设计的
TreeSet 会对放入的数据进行排序。如果需要制定排序规则,元素类要实现Comparable接口,实现compareTo()方法。
2、List 有序的 collection(也称为序列)。
ArrayList
LinkedList
3、Map 将键映射到值的对象。
HashMap 每次迭代的顺序会不同 。
HashMap的子类 LinkedHashMap :会始终保持插入时的顺序。
TreeMap :根据其键的自然顺序进行排序。(二叉树)
HashTable:是线程安全的
4、Arrays
此类包含用来操作数组(比如排序和搜索)的各种方法。此类还包含一个允许将数组作为列表来查看的静态工厂。
eg:asList方法提供了一个创建固定长度的列表的便捷方法,该列表被初始化为包含多个元素:
List stooges = Arrays.asList("Larry", "Moe", "Curly");[1、衡量标准:读的效率和改的效率 Array读快改慢; Linked读慢改快; Hash两者之间; 2、Map接口的实现类有HashMap和TreeMap等。Map的键值不能重复(equals) 3、自动打包