ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

D10

2022-08-17 11:02:39  阅读:175  来源: 互联网

标签: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
来源: https://www.cnblogs.com/BTB-12138/p/16594293.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有