D10
Set子接口
TreeSet
-
存储结构:红黑树
-
要求:元素必须要实现Comparable接口,compareTo方法返回值为0,认为是重复元素。
Comparator:实现定制比较(比较器)
Map父接口
-
特点:存储一对数据(Key-Value),无序、无下标,键不可重复,值可重复。
put();
remove();
containsKey();
containsValue();
//两种遍历方式,entrySet效率高于keySet
Set<String> keyset=map.keySet();
for (String s : keyset) {
System.out.println(s+map.get(s));
}
//或
//for (String s : map.keySet()) {
// System.out.println(s+map.get(s));
//}
Set<Map.Entry<String,String>> entries=map.entrySet();
for (Map.Entry<String, String> entry : entries) {
System.out.println(entry.getKey()+entry.getValue());
}
//entry是一个键值对。
//
//for (Map.Entry<String, String> entry : map.entrySet()) {
// System.out.println(entry.getKey()+entry.getValue());
//}
Map集合的实现类
HashMap集合的使用
-
存储结构:哈希表(数组+链表+红黑树)
-
根据key的hashcode和equals方法判断是否重复。
-
原码分析总结:
-
HashMap刚创建时,table是null,节省空间,当添加第一个元素时,table容量调整为16。
-
当元素个数大于阈值(16*0.75 = 12)时,会进行扩容,扩容后的大小为原来的两倍,目的是减少调整元素的个数。
-
jdk1.8 当每个链表长度 >8 ,并且数组元素个数 ≥64时,会调整成红黑树,目的是提高效率。
-
jdk1.8 当链表长度 <6 时 调整成链表。
-
jdk1.8 以前,链表时头插入,之后为尾插入。
Hashtable
线程安全,运行效率慢;不允许null作为key或是value。
Properties
Hashtable的子类,要求key和value都是string,通常用于配置文件的读取。
TreeMap
Collections工具类的使用
-
Collections.sort();
-
Collections.binarySearch(); // 二分查找
-
Collections.copy();
-
Collections.reverse(list); // 反转
-
Collections.shuffle(list); // 打乱
list转成数组
Integer[] arr=list.toArray(new Integer[0]);
数组转成集合
String[] names={"张三","李四","王五"};
List<String> list2=Arrays.asList(names);
//转成的集合是一个受限集合,不能添加和删除。
Integer[] nums={100,200,300,400,500};
List<Integer> list3=Arrays.asList(nums);
//把基本类型数组转成集合时,需要修改为包装类型。
标签:map,D10,list,链表,Collections,println,entry From: https://www.cnblogs.com/BTB-12138/p/16594293.html