首页 > 其他分享 >D10

D10

时间:2022-08-17 11:04:29浏览次数:49  
标签:map D10 list 链表 Collections println entry

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方法判断是否重复。

 

  • 原码分析总结:

  1. HashMap刚创建时,table是null,节省空间,当添加第一个元素时,table容量调整为16。

  2. 当元素个数大于阈值(16*0.75 = 12)时,会进行扩容,扩容后的大小为原来的两倍,目的是减少调整元素的个数。

  3. jdk1.8 当每个链表长度 >8 ,并且数组元素个数 ≥64时,会调整成红黑树,目的是提高效率。

  4. jdk1.8 当链表长度 <6 时 调整成链表。

  5. 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

相关文章