导航:首页 > 编程语言 > java集合效率

java集合效率

发布时间:2022-09-03 12:34:37

A. java集合有什么用

当你事先不知道要存放数据的个数,或者你需要一种比数组下标存取机制更灵活的方法时,你就需要用到集合类。
理解集合类
集合类存放于java.util包中。
集合类存放的都是对象的引用,而非对象本身,出于表达上的便利,我们称集合中的对象就是指集合中对象的引用(reference)。
集合类型主要有3种:set(集)、list(列表)和map(映射)。

B. 为什么有人说JAVA泛型集合性能不如传统集合

应该不会,潜在的性能收益。 泛型为较大的优化带来可能。在泛型的初始实现中,编译器将强制类型转换(没有泛型的话,程序员会指定这些强制类型转换)插入生成的字节码中。但是更多类型信息可用于编译器这一事实,为未来版本的 JVM 的优化带来可能。

C. java集合的作用

集合就是存放数据的容器。只不是java语言自己封装了好多类方便使用而已。
就拿ArrayList作为例子吧,当你从数据库里取出好多条数据,你可以把他们放在一个数组里,然后循环数组把他们打印出来。但使用数组的前提是你要知道一共有多少数据,因为数组初始化的大小是固定的。但ArrayList这个集合就无需考虑这个限制了,只要实例化一个,然后用add(Object);方法就可以放在里面了。
数组的效率高,集合更方便,根据需要决定用什么。

D. Java中最常用的集合类框架



一、HashMap的概述

HashMap可以说是Java中最常用的集合类框架之一,是Java语言中非常典型的数据结构。

HashMap是基于哈希表的Map接口实现的,此实现提供所有可选的映射操作。昆明电脑培训http://www.kmbdqn.cn/发现存储的是对的映射,允许多个null值和一个null键。但此类不保证映射的顺序,特别是它不保证该顺序恒久不变。

除了HashMap是异步以及允许使用null外,HashMap类与Hashtable大致相同。

此实现假定哈希函数将元素适当地分布在各桶之间,可为基本操作(get和put)提供稳定的性能。迭代collection视图所需的时间与HashMap实例的“容量”(桶的数量)及其大小(键-值映射关系数)成比例。所以,如果迭代性能很重要,则不要将初始容量设置得太高(或将加载因子设置得太低)。

HashMap的实例有两个参数影响其性能:初始容量和加载因子。容量是哈希表中桶的数量,初始容量只是哈希表在创建时的容量。加载因子是哈希表在其容量自动增加之前可以达到多满的一种尺度。当哈希表中的条目数超出了加载因子与当前容量的乘积时,则要对该哈希表进行rehash操作(即重建内部数据结构),从而哈希表将具有大约两倍的桶数。


通常,默认加载因子(0.75)在时间和空间成本上寻求一种折衷。加载因子过高虽然减少了空间开销,但同时也增加了查询成本(在大多数HashMap类的操作中,包括get和put操作,都反映了这一点)。在设置初始容量时应该考虑到映射中所需的条目数及其加载因子,以便最大限度地减少rehash操作次数。如果初始容量大于最大条目数除以加载因子,则不会发生rehash操作。

注意,此实现不是同步的。如果多个线程同时访问一个HashMap实例,而其中至少一个线程从结构上修改了列表,那么它必须保持外部同步。这通常是通过同步那些用来封装列表的对象来实现的。但如果没有这样的对象存在,则应该使用{@linkCollections#synchronizedMapCollections.synchronizedMap}来进行“包装”,该方法最好是在创建时完成,为了避免对映射进行意外的异步操作。

Mapm=Collections.synchronizedMap(newHashMap(...));

二、构造函数

HashMap提供了三个构造函数:

HashMap():构造一个具有默认初始容量(16)和默认加载因子(0.75)的空HashMap。

HashMap(intinitialCapacity):构造一个带指定初始容量和默认加载因子(0.75)的空HashMap。

HashMap(intinitialCapacity,floatloadFactor):构造一个带指定初始容量和加载因子的空HashMap。

这里提到了两个参数:初始容量,加载因子。这两个参数是影响HashMap性能的重要参数,其中容量表示哈希表中桶的数量,初始容量是创建哈希表时的容量,加载因子是哈希表在其容量自动增加之前可以达到多满的一种尺度,它衡量的是一个散列表的空间的使用程度,负载因子越大表示散列表的装填程度越高,反之愈小。对于使用链表法的散列表来说,查找一个元素的平均时间是O(1+a),因此如果负载因子越大,对空间的利用更充分,然而后果是查找效率的降低;如果负载因子太小,那么散列表的数据将过于稀疏,对空间造成严重浪费。系统默认负载因子为0.75,一般情况下我们是无需修改的。

HashMap是一种支持快速存取的数据结构,要了解它的性能必须要了解它的数据结构。


E. 在java中,foreach 和 iterator遍历集合时,那个效率更高一些

你好,前者效率更高

原因是for直接针对集合里的下一个对象

而iterator其实相当于是一个指针,这样说不准确,但是可以这样理解,每次执行它会先查找当前指向的对象,然后指针再指向下一个位置

所以说,如果有指针概念的话,for的“针对”直接是简单数据,而iterator的指针却是一个对象

F. 为什么java中数组的效率比集合高

最简单的理解是,集合内部是用数组实现的,直接用数组省去了一部分操作。

G. 为什么java集合的多线程实现对于大量数据并不能提高效率

这是多线程的效率问题,和集合没有关系
如果你是IO密集的应用,多线程会提高效率
如果你是计算密集的应用,多线程病不能提高效率

H. 浅谈Java中几个常用集合添加元素的效率

下面给你简单做一下比较:初始化需要进行比较的集合,统一增加10万个元素,获取整个过程的执行时间。
1、List集合增加元素
List添加10万个元素程序运行时间为:8ms
2、Set集合增加元素
Set添加10万个元素程序运行时间为:17ms
3、LinkedList集合增加元素
LinkedList添加10万个元素程序运行时间为:8ms
4、TreeSet集合增加元素
TreeSet添加10万个元素程序运行时间为:40ms
总结:在不考虑去重和排序的情况下,以上几个常用集合的执行效率排序为:ArrayList >= LinkedList > HashSet > TreeSet
5、HashMap集合增加元素
HashMap添加10万个元素程序运行时间为:17ms
6、TreeMap集合增加元素
TreeMap添加10万个元素程序运行时间为:40ms
总结:在不考虑排序的情况下,HashMap的执行效率高于TreeMap:HashMap > TreeMap。

I. JAVA里面set,map,list的区别是什么(尽量详细)

java集合的主要分为三种类型:

Java所有“存储及随机访问一连串对象”的做法,array是最有效率的一种。

1、
效率高,但容量固定且无法动态改变。
array还有一个缺点是,无法判断其中实际存有多少元素,length只是告诉我们array的容量。

2、Java中有一个Arrays类,专门用来操作array。
arrays中拥有一组static函数,
equals():比较两个array是否相等。array拥有相同元素个数,且所有对应元素两两相等。
fill():将值填入array中。
sort():用来对array进行排序。
binarySearch():在排好序的array中寻找元素。
System.array():array的复制。

若撰写程序时不知道究竟需要多少对象,需要在空间不足时自动扩增容量,则需要使用容器类库,array不适用。所以就要用到集合。

那我们开始讨论java中的集合。

集合分类:

Collection:List、Set
Map:HashMap、HashTable

阅读全文

与java集合效率相关的资料

热点内容
winftplinux 浏览:331
推特app界面如何设置成中文 浏览:452
太空工程师转子编程属性 浏览:32
windowscmd关机命令 浏览:342
云桌面只要服务器装一套软件 浏览:247
电脑右键按到什么导致文件夹全屏 浏览:454
我的世界如何制造服务器主城 浏览:365
linuxssh连不上 浏览:297
永宏plc用什么编程电缆 浏览:371
win激活命令行 浏览:886
新手学电脑编程语言 浏览:893
云空间在哪个文件夹 浏览:926
编程游戏小猫抓小鱼 浏览:790
安卓dosbox怎么打开 浏览:774
服务器无影响是怎么回事 浏览:958
比德电子采购平台加密 浏览:203
加密货币400亿 浏览:524
植发2次加密 浏览:44
vc6查看编译的错误 浏览:596
心理大全pdf 浏览:1002