diff --git a/.stackedit-trash/viewpagestorage.html.md b/.stackedit-trash/viewpagestorage.html.md new file mode 100644 index 0000000..7a05c5e --- /dev/null +++ b/.stackedit-trash/viewpagestorage.html.md @@ -0,0 +1,88 @@ +# 1\. List + +- 元素**有序** +- 元素**可重复** + +## 1.1 ArrayList + +- 动态数组实现 +- 查询快 +- 增删慢(末尾处也快) + +## 1.2 LinkedList + +- 链表实现 +- 查询慢 +- 增删快 + +## 1.3 ArrayList和LinkedList比较 + + + +实现 + +查询 + +增删 + +线程安全? + +ArrayList + +动态数组 + +快 + +慢(末尾处也快) + +不安全 + +LinkedList + +链表 + +慢 + +快 + +不安全 + +**ArrayList**: +它的默认初始化容量是10,每次扩容时候增加原先容量的一半,也就是变为原来的1.5倍。 + +**LinkedList**: +底层实现是双向链表。 +在增加和删除元素时效率较高。 + +## 1.4 List过滤指定元素 + +### 1.4.1 准备待测试的List + +javaRDarkjavaRDark(); list.add(new Message(1L, "a", new Date())); list.add(new Message(2L, "b", new Date())); list.add(new Message(4L, "b", new Date())); list.add(new Message(3L, "c", new Date())); return list; }\]\]> + +### 1.4.2 使用Iterator遍历List + +javaRDark System.out.print(item)); Iterator it = list.iterator(); while (it.hasNext()) { Message s = it.next(); if (s.getMsg().equals("b")) { it.remove(); } } System.out.print("\\n删除后:"); list.stream().forEach(item -> System.out.print(item)); }\]\]> + +### 1.4.3 使用Java8对List过滤筛选 + +javaRDark !s.getMsg().equals("b")).collect(Collectors.toList()); list2.stream().forEach(item -> System.out.println(item)); }\]\]> + +## 1.5 使用Java8对List排序 + +### 1.5.1 单个字段排序 + +javaRDark System.out.println(item)); //根据Id升序排序 list.sort((a, b) -> a.getId().compareTo(b.getId())); //根据Id升序排序(简写) list.sort(Comparator.comparing(Message::getId)); //根据Id降序排序(简写) list.sort(Comparator.comparing(Message::getId).reversed()); System.out.println("===排序后如下==="); list.stream().forEach(item -> System.out.println(item)); } }\]\]> + +### 1.5.2 多个字段组合排序 + +javaRDark System.out.println(item)); //根据多条件组合排序,先根据msg(升序),再根据id(升序) list.sort(Comparator.comparing(Message:: getMsg).thenComparing(Message::getId)); //根据多条件组合排序,先根据msg(升序),再根据id(降序) list.sort(Comparator.comparing(Message:: getMsg).thenComparing(Comparator.comparing(Message::getId).reversed())); //根据多条件组合排序,先根据msg(降序),再根据id(降序) list.sort(Comparator.comparing(Message:: getMsg).thenComparing(Message::getId).reversed()); //根据多条件组合排序,先根据msg(降序),再根据id(升序) list.sort(Comparator.comparing(Message:: getMsg).reversed().thenComparing(Message::getId)); System.out.println("===排序后如下==="); list.stream().forEach(item -> System.out.println(item)); } }\]\]> + +## 1.6 List转Map + +还是上面的测试数据,按Message的msg作为key,如果key重复就用第一个 + +javaRDark \ No newline at end of file