集合分类
Collection接口(单列集合)
- List接口: 特性 继承collection集合,排列有序且可重复
- LinkedList 接口实现类:链表实现,适用于插入删除型链表,线程不安全
- ArrayList 接口实现类:数组实现,适用于随机访问型链表,线程不安全
- Vector 接口实现类:数组实现,线程安全。
- **Set接口:**特性 继承collection集合,排列无序且不可重复
- HashSet 接口实现类:适用hash表(数组)存储元素。
- LinkedHashSet 继承HashSet,实现Set,链表维护元素的插入次序。
- TreeSet 接口实现类:二叉树实现,元素有序。
- HashSet 接口实现类:适用hash表(数组)存储元素。
Map接口(双列集合)
- HashTable 接口实现类,线程安全。
- HashMap 接口实现类,线程不安全。
- LinkedHashMap 双向链表和哈希实现类。
- WeakHashMap
- TreeMap 红黑树对所有的key进行排序。
- IdentifyHashMap
总结
Map和List、Set的区别
- Map是接口,而List和Set是Collection的子接口
- Map是双列集合,而List和set是单列集合
List和set的区别
- List 是排列有序且可重复得集合,而且可以通过索引查询集合中的元素。
- Set 排列无序且不可重复,没有索引,当然,Set中的实现类LinkedHshSet是通过链表维护着插入顺序的。
List集合
有序列表,允许存放重复元素;其实现类由三个:
- ArrayList:数组实现,查询快,增删慢,轻量级;(线程不安全)
- LinkedList:双向循环链表实现,增删快,查询慢 (线程不安全)
- Vector:数组实现,重量级 (线程安全、使用少)
List的四种遍历方式
public class ListTest { public static void main(String[] args) { List<Integer> list=new ArrayList<>(); list.add(1); list.add(2); list.add(3); //方法一,使用for循环(这种方法Set集合不适用) for (int i = 0; i <list.size() ; i++) { System.out.println(list.get(i)); } //方法二:增强for循环 for(Integer elem:list){ System.out.println(elem); } //方法三:迭代器实现遍历(第一种和第二种的底层也是使用迭代器实现 Iterator<Integer> integerIterator=list.iterator()