一直对容器的使用很模糊,是时候该总结一下了:
在项目开发中,一般使用的容器有:
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 会始终保持插入时的顺序。
TreeSet 会对放入的数据进行排序。如果需要制定排序规则,元素类要实现Comparable接口,实现compareTo()方法。
2、List 有序的 collection(也称为序列)。
ArrayList
LinkedList
3、Map 将键映射到值的对象。
HashMap 每次迭代的顺序会不同 。
HashMap的子类 LinkedHashMap :会始终保持插入时的顺序。
TreeMap :根据其键的自然顺序进行排序。(二叉树)
HashTable:是线程安全的
4、Arrays
此类包含用来操作数组(比如排序和搜索)的各种方法。此类还包含一个允许将数组作为列表来查看的静态工厂。
eg:asList方法提供了一个创建固定长度的列表的便捷方法,该列表被初始化为包含多个元素:
List<String> stooges = Arrays.asList("Larry", "Moe", "Curly");