java 中几种常用数据结构「建议收藏」

java 中几种常用数据结构「建议收藏」Java中有几种常用的数据结构,主要分为Collection和map两个主要接口(接口只提供方法,并不提供实现),而程序中最终使用的数据结构是继承自这些接口的数据结构类。一、几个常用类的区别 1.ArrayList:元素单个,效率高,多用于查询 2.Vector:元素单个,线程安全,多用于查询 3.LinkedList:元素单个,多用于插入和删除 4.H

大家好,又见面了,我是你们的朋友全栈君。

Java中有几种常用的数据结构,主要分为Collection和map两个主要接口(接口只提供方法,并不提供实现),而程序中最终使用的数据结构是继承自这些接口的数据结构类。

java 中几种常用数据结构「建议收藏」

java 中几种常用数据结构「建议收藏」

一、几个常用类的区别 
1.ArrayList: 元素单个,效率高,多用于查询 
2.Vector: 元素单个,线程安全,多用于查询 
3.LinkedList:元素单个,多用于插入和删除 
4.HashMap: 元素成对,元素可为空 
5.HashTable: 元素成对,线程安全,元素不可为空 
二、Vector、ArrayList和LinkedList 
大多数情况下,从性能上来说ArrayList最好,但是当集合内的元素需要频繁插入、删除时LinkedList会有比较好的表现,但是它们三个性能都比不上数组,另外Vector是线程同步的。所以: 
如果能用数组的时候(元素类型固定,数组长度固定),请尽量使用数组来代替List; 
如果没有频繁的删除插入操作,又不用考虑多线程问题,优先选择ArrayList; 
如果在多线程条件下使用,可以考虑Vector; 
如果需要频繁地删除插入,LinkedList就有了用武之地; 
如果你什么都不知道,用ArrayList没错。 
三、Collections和Arrays 
在Java集合类框架里有两个类叫做Collections(注意,不是Collection!)和Arrays,这是JCF里面功能强大的工具,但初学者往往会忽视。按JCF文档的说法,这两个类提供了封装器实现(Wrapper Implementations)、数据结构算法和数组相关的应用。 
想必大家不会忘记上面谈到的“折半查找”、“排序”等经典算法吧,Collections类提供了丰富的静态方法帮助我们轻松完成这些在数据结构课上烦人的工作: 
binarySearch:折半查找。 
sort:排序,这里是一种类似于快速排序的方法,效率仍然是O(n * log n),但却是一种稳定的排序方法。 
reverse:将线性表进行逆序操作,这个可是从前数据结构的经典考题哦! 
rotate:以某个元素为轴心将线性表“旋转”。 
swap:交换一个线性表中两个元素的位置。 
…… 
Collections还有一个重要功能就是“封装器”(Wrapper),它提供了一些方法可以把一个集合转换成一个特殊的集合,如下: 
unmodifiableXXX:转换成只读集合,这里XXX代表六种基本集合接口:Collection、List、Map、Set、SortedMap和SortedSet。如果你对只读集合进行插入删除操作,将会抛出UnsupportedOperationException异常。 
synchronizedXXX:转换成同步集合。 
singleton:创建一个仅有一个元素的集合,这里singleton生成的是单元素Set, 
singletonList和singletonMap分别生成单元素的List和Map。 
空集:由Collections的静态属性EMPTY_SET、EMPTY_LIST和EMPTY_MAP表示。

 

转载:http://blog.csdn.net/u010947402/article/details/51878166

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/157001.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月8日 上午11:00
下一篇 2022年7月8日 上午11:16


相关推荐

  • hotspare的copyback

    hotspare的copyback最近做硬件巡检 发现一部分硬盘出现了坏块 同事就帮忙去协调处理这个事情 晚些时候接到了现场工程师的电话 问我可以不可以换 简单确认是 raid5 的盘 所以只能一个盘一个盘来换 首先确定来第一块要换的盘 位于 slot1 也就是

    2026年3月18日
    3
  • OpenAI 放王炸,将发布整合多项技术的 GPT-5,并免费无限使用,该模型有哪些技术亮点?

    OpenAI 放王炸,将发布整合多项技术的 GPT-5,并免费无限使用,该模型有哪些技术亮点?

    2026年3月17日
    1
  • 数组指针和指针数组

    数组指针和指针数组首先 理解一下数组指针和指针数组这两个名词 数组指针 和 指针数组 只要在名词中间加上 的 字 就知道中心了 数组的指针 是一个指针 什么样的指针呢 指向数组的指针 指针的数组 是一个数组 什么样的数组呢 装着指针的数组 然后 需要明确一个优先级顺序 gt gt 所以 p n 根据优先级 先看括号内 则 p 是一个指针 这个指针指向一个一维数组 数组长

    2026年3月18日
    1
  • Java基础篇:泛型与类型擦除

    Java基础篇:泛型与类型擦除

    2021年10月3日
    45
  • Golang语言空白符

    Golang语言空白符空白符 blankidentif 空白符的产生可能是因为 go 不允许变量声明了但不使用 既然不想使用 何必声明变量呢 那就将变量用空白符代替 反正空白符就是用来抛弃的 1 空白符用来匹配一些不需要的值 然后丢弃掉 下面的 blank identifier go 就是很好的例子 ThreeValues nbsp 是拥有三个返回值的不需要任何参数的函数 在下面的例子中 我们将第

    2025年11月20日
    13
  • c语言输入4个整数要求按由小到大_c语言任意输入3个数从小到大排序

    c语言输入4个整数要求按由小到大_c语言任意输入3个数从小到大排序7-2 比较大小 本题要求将输入的任意3个整数从小到大输出。输入格式: 输入在一行中给出3个整数,其间以空格分隔。输出格式: 在一行中将3个整数从小到大输出,其间以“->”相连。 输入样例: 4 2 8 输出样例: 2->4->8/*#include<iostream>using namespace std;int main(){ …

    2022年8月18日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号