联系我们 - 广告服务
您的当前位置:官网首页 > 资讯 > 热评 >

java常用集合区别对待

来源: 编辑: 时间:2019-08-14
导读: list、map、set三个接口,存取元素特点:首先,list与set具有相似性,它们都是单列的集合,然后父接口为collection。set中不允许有重复的元......

list、map、set三个接口,存取元素特点:

首先,list与set具有相似性,它们都是单列的集合,然后父接口为collection。set中不允许有重复的元素,set集合有一个boolean的返回值,当集合中没有某个元素,此时add方法可添加成功;当集合含有与某个元素equals相等的元素时,此时add无法添加;set取元素时,无法说取第几个,只能以iterator接口取得所有的元素,再逐一遍历各个元素;

list为有序集合,并且可以存放重复元素;list也可以使用iterator接口取得所有元素,再逐一遍历,还可以调用get来明确说明取第几个;

map是双列集合,需要存储一对key/value,不能存储重复的key,重复规则是按equals比较相等。取则可以根据key获得相应的value,即get返回值为对应的value。通过keyset获取所有key值,还可以通过map.entry获得key和value的组合;

arraylist与linkedlist区别:

arraylist采用动态数组的形式保存对象,这种方式将对象放在连续的内存块中,所以插入和删除比较麻烦,查询比较方便;

linkedlist将对象放在独立的空间中,而且每个空间保存下一个空间的索引,也就是数据结构中的链表结构,插入和删除比较方便,但是查询很麻烦,要从第一个开始遍历;

需要循环数组结构的集合数据时,建议使用普通for循环,因为for循环使用下标访问,对于数组结构,采用下标访问最好;

需要循环链表结构的集合时,使用增强foreach循环;如果使用普通for循环,数据量大时,可能导致系统崩溃;

hashset与treeset之间的区别
共同点:1、都不允许元素重复。
2、都不是线程安全的类,解决办法:set set = collections.synchronizedset。
不同点:
1、hashset:不保证元素的添加顺序,底层采用 哈希表算法,查询效率高。判断两个元素是否相等,equals 方法返回 true,hashcode 值相等。即要求存入 hashset 中的元素要覆盖 equals 方法和 hashcode方法。
2、treeset:不保证元素的添加顺序,但是会对集合中的元素进行排序。底层采用 红-黑 树算法。






hashmap与hashtable区别

1.hashtable是线程同步的,也是线程安全的。hashmap不是线程同步的,所以不是线程安全的。所以在多线程场合要手动同步hashmap这个区别就像vector和arraylist一样。 

2.hashtable不允许null值,hashmap允许null值。

3.hashtable有一个contains,功能和containsvalue功能一样。 

4.hashtable使用enumeration,hashmap使用iterator。 

hashmap是一个最常用的map,它根据键的hashcode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度。hashmap最多只允许一条记录的键为null;允许多条记录的值为 null;hashmap不支持线程的同步,即任一时刻可以有多个线程同时写hashmap;可能会导致数据的不一致。如果需要同步,可以用 collections的synchronizedmap方法使hashmap具有同步的能力。 

linkedhashmap也是一个hashmap,但是内部维持了一个双向链表,可以保持顺序

treemap 可以用于排序

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出
原文链接:


责任编辑:

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

网友评论:

在“\templets\demo\comments.htm”原来的内容全部删除,插入第三方评论代码,如果不需要评论功能,删除comments.html里面的内容即可
推荐使用友言、多说、畅言(需备案后使用)等社会化评论插件

Copyright © 2018 太阳城娱乐场太阳城娱乐场-新太阳城 All Rights Reserved Power by DedeCms
本站所有资讯来源于网络 如有侵权请联系QQ:9490489
Top