java集合框架图 :
简化图:
Collection:接口
|=List:元素可重复,有序
|=ArrayList:(可变数组、线程不同步、可存null)实现了可变大小的数组(数据结构),不是线程同步。它允许所有元素,包括null, 索引值从0开始。<查询数据,效率高>
|=LinkedList:(双向链表,非线程安全)以链表的形式存储元素(数据结构),不是线程同步的,它允许所有元素,包括null。<插入、 删除数据,效率高>
|=Vector:可变数组,线程安全,效率低。特有遍历:Enumeration en = stack.elements();。
|=Stack:栈Stack继承Vector,实现一个后进先出(filo)的堆栈,索引从 1 开始。
|=Set:元素不可重复,无序(除了Treeset以外)
|=HashSet:行散列表,<自定义类的对象作为元素存入,必须重写hashcode()以及equals()方法>。
|=TreeSet:二叉树(红黑树),元素必须可排序;< 自定义类的对象比较方式:①对象所属类继承Comparable(),②自定义比较器继 承Comparator()>。
①Iterator:迭代器;Iterator it = list.iterator();while (it.hasNext()) {};
② 增强型for循环;for (Iterator it = list.iterator();it2.hasNext();) {};
③工具类 Collections;自然顺序排序:sort(list);随机排序:shuffle(list);反转:reverse(list);2复制到1:copy(list1, list2);
④工具类 Arrays;数组转集合:asList(arr);自然顺序排序sort(arr);2复制到1:copy(arr1,arr2);
Map:①通过“键-值”映射对形式存储,键唯一,底层的“键”是用Set来存放的;②存入Map中的映射对的“键”对应的类必须重写hashcode()和 equals()方法。
|=HashMap:(哈希表,非线程安全)底层数据结构是哈希表,键唯一不可重复,非线程安全,可存null键null值
|=TreeMap:(二叉树(红黑树),键可排序)
|=Hashtable:(哈希表,线程安全,占用资源比较多,效率低(少用))
①遍历方式:
keySet();Set<String> key = mp.keySet();
entrySet();Set<Map.Entry<String, String>> ent = mp.entrySet();
②List跟Map嵌套;ArrayList<HashMap<Person, String>> list = new ArrayList<>();