java 中几种常用数据结构「建议收藏」
大家好,又见面了,我是你们的朋友全栈君。
Java中有几种常用的数据结构,主要分为Collection和map两个主要接口(接口只提供方法,并不提供实现),而程序中最终使用的数据结构是继承自这些接口的数据结构类。
一、几个常用类的区别 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.cn/157001.html原文链接:https://javaforall.cn
相关文章
- java用什么编译器_Java用Java编译「建议收藏」
- java除法保留两位小数_JAVA除法保留小数点后两位的两种方法
- java出现中文乱码_JAVA中文显示乱码问题「建议收藏」
- java怎么运行_怎样启动JAVA?「建议收藏」
- 什么是java虚拟机(Java Virtual Machine)?
- java和c语言哪个简单_Java编程和C语言哪个好学
- java标识符是什么_Java 标识符「建议收藏」
- java用正则表达式大全_Java 正则表达式 大全「建议收藏」
- java resourcebundle_Java – Properties和ResourceBundle类学习「建议收藏」
- java jersey使用总结_jersey Java Jersey配置「建议收藏」
- java无法获取服务器上路径,JAVA获取服务器路径的步骤
- java dom4j生成xml格式化_Java DOM4J方式生成XML的方法「建议收藏」
- java注释的作用是什么_java为什么要写注释
- 数据结构用链表来实现------》Java
- 数据结构用栈来判断括号匹配问题——Java
- java 文件上传到服务器_Java上传文件到服务器端的方法「建议收藏」
- Java入门代码_java编程自学网
- java输出一个数组的元素_Java输出数组元素「建议收藏」
- java 缓存工具类初始化_Java缓存框架
- java数据结构和算法(六)
- vscode可以写java代码吗
- Java学习笔记之二java标识符命名规范详解编程语言
- Java数据结构和算法(十五)——无权无向图详解编程语言
- 深入浅出:利用Java操作MySQL(java操作mysql)
- Java连接Oracle实现简单快捷的数据传输(java联结oracle)
- Java中使用数组实现栈数据结构实例