博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java 集合
阅读量:7268 次
发布时间:2019-06-29

本文共 1376 字,大约阅读时间需要 4 分钟。

1。?

在List中提供了get等方法来实现随机取在容器中的元素,但是,为什么在Set中没有提供呢,如果要在Set及子类中实现随机读取元素,该怎么操作,不可能自己去遍历或将Set存到List中去吧。

set是一个集合,集合就是一堆东西的意思,set中的东西是不重复的,即使你放了两个一样的东西,set只会保留一个;set是不能随机存取的,而且set的顺序是不固定的,读的顺序跟你存的顺序也是不同的,这是由set的性质决定的。而list是链表的意思,存取的顺序是固定的,所以可以随机读。如果要随机存取,那就用list吧。

 

 

1.在数组中我们是通过数组下标来对其内容索引的,而在Map中我们通过对象来对对象进行索引,用来索引的对象叫做key,其对应的对象叫做value。

2.hashmap遍历的两种方法,通过set<map.entry>集合,或者通过keySet集合

1.通过keySet集合遍历        Set
ketSet = hashMap.keySet(); Iterator
keyIterator = ketSet.iterator(); while(keyIterator.hasNext()) { Object object = keyIterator.next(); System.out.println("key set is:"+object+":"+hashMap.get(object)); }

以HashSet为例,源码中有这么几行代码 

Java代码  
  1.    private transient HashMap<E,Object> map;  
  2.      
  3.    // Dummy value to associate with an Object in the backing Map  
  4.    private static final Object PRESENT = new Object();  
  5.   
  6.    /** 
  7.     * Constructs a new, empty set; the backing <tt>HashMap</tt> instance has 
  8.     * default initial capacity (16) and load factor (0.75). 
  9.     */  
  10.    public HashSet() {  
  11. map = new HashMap<E,Object>();  
  12.    }  
  13.   
  14.    public boolean add(E e) {  
  15. return map.put(e, PRESENT)==null;  
  16.    }  

可以明显看出,HashSet的本质是一个Map,Map的key就是HashSet加入的值,Map的value都是PRESENT(Object的实例)。Map是怎么存储的?HashMap是随机存储的,只能通过key来get,没有顺序遍历。
而List的本质是一个数组,当然可以通过get(index)获取 
如果还不是很清楚,建议看看List ArrayList LinkedList Set HashSet TreeSet 的源码,也不要被源码吓到,很简单的,我都看懂了

转载地址:http://oigdm.baihongyu.com/

你可能感兴趣的文章
GraphQL 配合 JWT 使用 —— Laravel RSS (二)
查看>>
dubbo扩展点的IOC
查看>>
关于跨域的what,why,how
查看>>
Nginx 源码安装
查看>>
k8s :kube-apiserver 启动流程 - 2
查看>>
从比特币脚本引擎到以太坊虚拟机
查看>>
学习笔记CB001:NLTK库、语料库、词概率、双连词、词典
查看>>
Grpc+Grpc Gateway实践三 Swagger了解一下
查看>>
快速学习nodejs系列:九、nodejs没有web容器
查看>>
vscode常用插件【全了】
查看>>
EventBus实现两个Fragment直接的跳转
查看>>
与vim的一段往事
查看>>
Nginx笔记(一)Nginx安装
查看>>
ES6语法之可迭代协议和迭代器协议
查看>>
yeoman webapp gulpfile.js配置解析
查看>>
Javascript运行机制
查看>>
gulp-sass + browser-sync 一直刷新的问题
查看>>
Merge k Sorted Lists
查看>>
Uber分布式追踪系统Jaeger使用介绍和案例【PHP Hprose Go】
查看>>
Java的一些题目
查看>>