20220806 第一组 于芮 list和map(第二十六天)
list:有顺序的,数据可以重复
vector:和ArrayList几乎一样,
collection和map 的区别
collection:存放单值最大父接口
map:存放对值最大父接口
ArrayList和linklist的区别
arraylist :内部结构是数组,比较适合和高频率的查找和遍历
linklist:双向链表,比较适合高频率的新增和删除
ArrayList和vector的区别
ArrayList线程异步,线程不安全,效率高
vector线程同步,线程安全,效率低
set和list的区别
list:有顺序(先后顺序),元素可以重复
set:无顺序,元素不可以重复,顺序是先后顺序,其实有顺序,内部有一个专门排序的算法,
无序不等于随机,无序是没有按照先后添加顺序
treeset可以排序的集合
排序规则:需要排序的对象的类必须实现compareable接口
compareto方法(返回值int,代表排序结果)
负数-1:比较的两个值调用者小
0:比较的两个值相等
正数1:比较的两个值调用者大
hashset和linkset的区别和联系
比较接口
comparable:自然排序,排序规则固定
compareto:临时排序
map:接口,泛型接口(两个泛型)
存储对值key value(key不能重复,value可以重复)
没有顺序(添加的先后顺序)
hashtable和hashmap的区别
1.hashmap线程异步,线程不安全,hashtable线程同步,线程安全
2.hashmap的key可以为null,hashtable不可以为null的
linkedhashmap:双向链表
priperties:属性
是hashtable的子类,更多的是用来操作属性文件
集合的遍历
list集合的遍历方式
for循环
foreach增强for循环
迭代器(接口)-----iterator
set集合的遍历方式
map集合的遍历
1.for循环
2.增强for循环
entry是hashmap的内部类,每一组键值对是一个entry对象
3.增强for循环
4.迭代器
其他的集合
linkedhashmap
hashmap基础上,维护了一个双向链表
treemap 支持排序
collections是一个工具类
并发修改异常(线程安全问题)
迭代器以来集合存在,判断成功以后,如果集合中新增了元素,迭代器不知道,所以报错
解决
1.迭代器遍历元素,迭代器删除元素
2.普通for循环遍历,集合删除
今天主要的实例主要是一些集合的使用实验,还有一些循环、迭代器的应用,实例让我更加理解了集合的应用有多么便捷!
1 package F0806; 2 3 import com.sun.source.tree.Tree; 4 5 import javax.xml.transform.Source; 6 import java.nio.charset.MalformedInputException; 7 import java.sql.SQLOutput; 8 import java.time.chrono.MinguoChronology; 9 import java.util.*; 10 11 public class Ch01 { 12 /*public static void main(String[] args) { 13 LinkedList<String >list=new LinkedList<>(); 14 list.add("a"); 15 list.add("b"); 16 list.add("c"); 17 list.add("d"); 18 list .addFirst("z"); 19 list .addLast("x"); 20 System.out.println(list.get(2)); 21 System.out.println(list); 22 }*/ 23 /*public static void main(String[] args) { 24 Set<Integer>set=new HashSet<>(); 25 set.add(Integer.valueOf(200)); 26 set.add(4); 27 set.add(15); 28 set.add(38); 29 set.add(Integer.valueOf(200)); 30 System.out.println(set); 31 }*/ 32 /*public static void main(String[] args) { 33 Set<Integer>tree=new TreeSet<>(); 34 35 tree.add(-100); 36 tree.add(50); 37 tree.add(10); 38 tree.add(100); 39 tree.add(-19); 40 Set<String>tree1=new TreeSet<>(); 41 tree1.add("1"); 42 tree1.add("a"); 43 tree1.add("hhhhhh"); 44 System.out.println(tree); 45 System.out.println(tree1); 46 }*/ 47 /*public static void main(String[] args) { 48 LinkedHashSet<String>set=new LinkedHashSet<>(); 49 50 set.add("q"); 51 set.add("1"); 52 set.add("e"); 53 set.add("hhhh"); 54 System.out.println(set); 55 56 57 }*/ 58 /* public static void main(String[] args) { 59 List<Person> list = new ArrayList<>(16); 60 list.add(new Person("张岳",1100)); 61 list.add(new Person("李四",1010)); 62 list.add(new Person("刘海柱",1020)); 63 list.sort(new Comparator<Person>() { 64 // @Override 65 // public int compare(Person o1, Person o2) { 66 // return 0; 67 // } 68 // }); 69 list.sort((o1,o2) -> { 70 if(o1.getId() < o2.getId()){ 71 return -1; 72 } 73 if(o1.getId().equals(o2.getId())){ 74 return 0; 75 } 76 return 1; 77 }); 78 System.out.println(list); 79 }*/ 80 /*public static void main(String[] args) { 81 Map<String,String>map=new HashMap<>(); 82 83 map.put("1001","qq"); 84 map.put("1002","qy"); 85 map.put("1003","qr"); 86 map.put("1004","qe"); 87 map.put("1005","ww"); 88 System.out.println(map); 89 System.out.println(map.get(1002)); 90 System.out.println(map.values()); 91 System.out.println(map.keySet()); 92 93 }*/ 94 /*public static void main(String[] args) { 95 Map<String,String>map=new HashMap<>(); 96 map.put(null,null); 97 System.out.println(map); 98 Hashtable<String,String>table=new Hashtable<>(); 99 //table(null,null); 100 System.out.println(table); 101 }*/ 102 /*public static void main(String[] args) { 103 List<String> list = new ArrayList<>(); 104 list.add("a"); 105 list.add("b"); 106 list.add("c"); 107 list.add("d"); 108 list.add("e"); 109 *//* for (int i = 0; i < list.size(); i++) { 110 System.out.println(list.get(i)); 111 }*//* 112 *//*for (String s1:list){ 113 System.out.println(s1); 114 }*//* 115 //迭代器 116 Iterator<String>iterator=list.listIterator(); 117 while (iterator.hasNext()){ 118 String s=iterator.next(); 119 iterator.remove(); 120 System.out.println(s); 121 } 122 System.out.println(list); 123 }*/ 124 /*public static void main(String[] args) { 125 Set<Integer>set=new HashSet<>(); 126 set.add(4); 127 set.add(12); 128 set.add(99); 129 //迭代器 130 *//*Iterator<Integer>iterator=set.iterator(); 131 while(iterator.hasNext()){ 132 System.out.println(iterator.next()); 133 }*//* 134 for (Integer integer:set){ 135 System.out.println(integer); 136 } 137 *//*for (int i = 0; i < set.size(); i++) { 138 System.out.println(set); 139 }*/ 140 /*public static void main(String[] args) { 141 Map<String,String>map=new HashMap<>(); 142 map.put("1001","qq"); 143 map.put("1002","qw"); 144 map.put("1003","qe"); 145 map.put("1004","qr"); 146 map.put("1005","qt"); 147 Set<String>strings=map.keySet(); 148 Iterator<String>iterator=strings.iterator(); 149 while (iterator.hasNext()){ 150 String s=iterator.next(); 151 System.out.println(s+"->"+map.get(s)); 152 }*/ 153 //增强for循环 154 //entry是hasnmap的一个内部类,每一组键值对就是一个entry对象 155 //Set<Map.Entry<String, String>> entries = map.entrySet(); 156 // for (Map.Entry<String, String> entry : entries) { 157 // System.out.print(entry.getKey() + "->"); 158 // System.out.println(entry.getValue()); 159 // } 160 161 // 2.增强for循环 162 // Set<String> strings = map.keySet(); 163 // Collection<String> values = map.values(); 164 165 // 1.for循环 166 // Set<String> strings = map.keySet(); 167 // for (String s : strings) { 168 // System.out.println(s + "->" + map.get(s)); 169 // } 170 /*public static void main(String[] args) { 171 List<String>names=new ArrayList<>(); 172 names.add("qq"); 173 names.add("q2"); 174 names.add("qw"); 175 names.add("qr"); 176 names.add("q4"); 177 for (int i = 0; i < names.size(); i++) { 178 if(Objects.equals(names.get(i),"l")){ 179 names.remove(i); 180 i--; 181 } 182 if("l".equals(names.get(i))){ 183 } 184 } 185 //倒序遍历 186 for (int i = names.size()-1; i >=0 ; i--) { 187 if(Objects.equals(names.get(i),"l")){ 188 names.remove(i); 189 } 190 } 191 //使用迭代器 192 Iterator<String>iterator=names.iterator(); 193 while (iterator.hasNext()){ 194 String s=iterator.next(); 195 if(Objects.equals(s,"l")){ 196 iterator.remove(); 197 } 198 } 199 //增强for循环 200 for (String s:names){ 201 if(Objects.equals(s,"l")){ 202 names.remove(names.indexOf(s)); 203 } 204 } 205 System.out.println(names); 206 }*/ 207 208 }