---|Collection: 单列集合
---|List: 有存储顺序, 可重复
---|ArrayList: 数组实现, 查找快,增删慢
由于是数组实现,在增和删的时候会牵扯到数组
增容, 以及拷贝元素. 所以慢。数组是可以直接按索引查找,所以查找时较快
---|LinkedList: 链表实现, 增删快,查找慢由于链表实现,增加时只要让前一个元素记住自己就可以,删除时让前一个元素记住后一个元素,后一个元素记住前一个元素.这样的增删效率较高但查询时需要一个一个的遍历,所以效率较低
---|Vector: 和ArrayList原理相同,但线程安全,效率略低
和ArrayList实现方式相同,但考虑了线程安全问题,所以效率略低
---|Set: 无存储顺序, 不可重复
---|HashSet 线程不安全,存取速度快。底层是以哈希表实现的。
---|TreeSet 红-黑树的数据结构,默认对元素进行自然排
序(String)。如果在比较的时候两个对象
返回值为0,那么元素重复。
---| Map: 键值对 键不可重复,键可以重复
---|HashMap 线程不安全,存取速度快。底层是以哈希表实现的.
---|TreeMap 红-黑树的数据结构,默认对元素进行自然排
序(String)。如果在比较的时候两个对象
返回值为0,那么元素重复
---|HashTable 底层也是使用了哈希表维护的,存取的读取快,存储元素是
无序的。
二、代码
class Person{ int id; String name; public Person(int id, String name) { super(); this.id = id; this.name = name; } @Override public int hashCode() { return this.id; } @Override public boolean equals(Object obj) { Person p = (Person)obj; return this.id == p.id; } @Override public String toString() { return "编号:"+ this.id +" 姓名: "+ this.name; }}public class Demo1 { public static void main(String[] args) { HashSet<Person> set = new HashSet<Person>(); set.add(new Person(110,"狗娃")); set.add(new Person(110,"狗娃")); System.out.PRintln("集合的元素:"+ set); } }
新闻热点
疑难解答