搜索
首页Javajava教程java中集合的区别是什么?

java中集合的区别是什么?

Nov 18, 2019 pm 05:49 PM
java集合

java中集合的区别是什么?

java中集合的区别是什么?

在java中集合主要分为:List,Set,Map三种,其中List与Set是继承自Collection,而Map不是。

List与Set的区别:List中的元素有存放顺序,并且可以存放重复元素,检索效率高,插入删除效率低,Set没有存放顺序,而且不可以存放重复元素,后来的元素会把前面重复的元素替换掉,检索效率低,插入删除效率高。(Set存储位置是由它的HashCode码决定的,所以它存储的对象必须有equals()方法,而且Set遍历只能用迭代,因为它没有下标。)

1、最常用的集合:ArrayList

特点:ArrayList集合中元素存储的位置是连续的,所以查询起来会比较快捷,但是执行插入删除操作会比较麻烦一点,会引起其他元素位置的变化。

注意:list中存储的是对象的引用,而不是对象本身。如果不清楚这一点会在这里有个坑,例如:

有人为了节省优化代码,节省虚拟机内存会这么写代码:

List<List<String>> list=new ArrayList<>();
List<String> list2=new ArrayList<>();
for(int i=0;i<10;i++){
    list2.add(""+i);    
    list.add(list2);
    list2.clear();
}

这样写虽然可以一个对象重复使用,但是,list存储的是对象的引用,当list2.clear();的时候,list中的list2也会clear,这样最后得到的就只能是一堆空的集合了。

2、与最常用集合相反的集合:LinkedList

LinkedList与ArrayList是互补的,所以ArrayList的优点就是LinkedList的缺点,ArrayList的缺点就是LinkedList的优点。

特点:LinkedList中元素位置是任意的,所以执行插入删除操作效率较高,查询效率较低。

3、与一般集合都相反的集合:Vector

为什么说它与一般集合都相反呢?因为它是一种老的动态数组,很多方法都用synchonized修饰,所以它是线程安全得,而一般集合是线程不安全得。

特点:多个线程同时访问不会发生不确定的结果,但是它的效率会比较低,如果要考虑线程安全的话可以用它。

4、Set中最常用的集合:HashSet

在用Set集合的时候我几乎用的都是HashSet,HashSet是使用Hash表实现的,集合里面的元素是无序得,可以有null值,但是不能有重复元素。

特点:因为相同的元素具有相同的hashCode,所以不能有重复元素

5、Set中第二常用的集合:TreeSet

TreeSet是用二叉树结构实现的集合

特点:集合中的元素是有顺序得,不允许放入null,同样不能放入重复元素。

6、第二常用的集合:HashMap

经常遇到需要使用键值对存储的场景,而HashMap是用得最多的一种键值对存储的集合。

特点:HashMap允许空键值,并且它是非线程安全的,所以插入、删除和定位元素会比较快。

7、一些不太常用的Map集合:TreeMap,HashTable

TreeMap是基于红黑树实现的,适用于按自然顺序火兹定于顺序遍历key。

HashTable是基于HashCode实现的,但它是线程安全的,所以会比HashMap效率低,而且不允许null值。

推荐教程:Java教程

以上是java中集合的区别是什么?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热工具

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境