java的常用数据结构
Java中有几种常用的数据结构,主要分为Collection和map两个主要接口(接口只提供方法,并不提供实现),而程序中最终使用的数据结构是继承自这些接口的数据结构类。
---
1. Collection: 又有两大类set,list。
- list(相当于普通数组,元素可重复):基本的三类
1 ArrayList: 元素单个,效率高,多用于查询,底层结构数组,有序。
2 LinkedList:元素单个,多用于插入和删除,底层结构双向链表,有序。
3 Vector: 元素单个,线程安全,多用于查询,底层结构数组,有序。
4 Stack:栈,先进后出
- set(数学意义上的集合,元素不可重复):
1 HashSet:HashSet的底层实际上是由HashMap实现的。其四个构造函数分别对应相应的HashMap。
2 TreeSet:其中的元素按照升序排列,缺省是按照自然顺序进行排序,意味着TreeSet中的元素要实现Comparable接口,或者有一个自定义的比较器Comparator。底层数据结构红黑树。
2.Map(存储键值对,key唯一):
1 HashMap:继承于AbstractMap,实现了Map、Cloneable、java.io.Serializable接口。HashMap 的实现不是同步的,这意味着它不是线程安全的,无序且值不唯一。
2 TresMap:是一个有序的key-value集合,它是通过红黑树实现的。有序,不安全,值也不唯一。
3 ConcurrentHashMap:线程安全的,使用的锁分段技术。
java的常用数据结构的更多相关文章
- 动图+源码,演示Java中常用数据结构执行过程及原理
最近在整理数据结构方面的知识, 系统化看了下Java中常用数据结构, 突发奇想用动画来绘制数据流转过程. 主要基于jdk8, 可能会有些特性与jdk7之前不相同, 例如LinkedList Linke ...
- 动图+源码,演示 Java 中常用数据结构执行过程及原理
阅读本文大概需要 3.7 分钟. 作者:大道方圆 cnblogs.com/xdecode/p/9321848.html 最近在整理数据结构方面的知识, 系统化看了下Java中常用数据结构, 突发奇想 ...
- 图解Java常用数据结构(一)【转载】
最近在整理数据结构方面的知识, 系统化看了下Java中常用数据结构, 突发奇想用动画来绘制数据流转过程. 主要基于jdk8, 可能会有些特性与jdk7之前不相同, 例如LinkedList Linke ...
- 图解Java常用数据结构(一)
最近在整理数据结构方面的知识, 系统化看了下Java中常用数据结构, 突发奇想用动画来绘制数据流转过程. 主要基于jdk8, 可能会有些特性与jdk7之前不相同, 例如LinkedList Linke ...
- 【转载】图解Java常用数据结构(一)
图解Java常用数据结构(一) 作者:大道方圆 原文:https://www.cnblogs.com/xdecode/p/9321848.html 最近在整理数据结构方面的知识, 系统化看了下Jav ...
- 图解Java常用数据结构
最近在整理数据结构方面的知识, 系统化看了下 Java 中常用数据结构, 突发奇想用动画来绘制数据流转过程. 主要基于 jdk8, 可能会有些特性与 jdk7 之前不相同, 例如 LinkedList ...
- Java中的数据结构有哪些?HashMap的工作原理是什么?
Java中常用数据结构 常用的数据结构有哈希表,线性表,链表,java.util包中有三个重要的接口:List,Set,Map常用来实现基本的数据结构 HashMap的工作原理 HashMap基于ha ...
- JAVA常用数据结构及原理分析
JAVA常用数据结构及原理分析 http://www.2cto.com/kf/201506/412305.html 前不久面试官让我说一下怎么理解java数据结构框架,之前也看过部分源码,balaba ...
- Java 常用数据结构对象的实现原理 集合类 List Set Map 哪些线程安全 (美团面试题目)
Java中的集合包括三大类,它们是Set.List和Map, 它们都处于java.util包中,Set.List和Map都是接口,它们有各自的实现类. List.Set都继承自Collection接口 ...
随机推荐
- 实验五:任意输入10个int类型数据,排序输出,并找出素数
源代码: package 数组;import java.util.*;public class vvv { public static void main(String[] args) { Scann ...
- 通过ffi在node.js中调用动态链接库[转]
http://blog.csdn.net/zhulin2609/article/details/51474676
- app性能测试,你需要关注哪些指标?
app性能测试,你需要关注哪些指标? 一.Android客户端性能测试常见指标: 1.内存 2.CPU 3.流量 4.电量 5.启动速度 6.滑动速度.界面切换速度 7.与服务器交互的网络速度 二.预 ...
- [Swift]LeetCode310. 最小高度树 | Minimum Height Trees
For an undirected graph with tree characteristics, we can choose any node as the root. The result gr ...
- [Swift]LeetCode632. 最小区间 | Smallest Range
You have k lists of sorted integers in ascending order. Find the smallest range that includes at lea ...
- 优化之Source Qualifier组件
勾选Select Distinct选项,该选项可去除重复记录,以此达到减少数据量从而提高性能 ----------------------------------------------------- ...
- python网络-Socket之udp编程(24)
一.udp简介 udp --- 用户数据报协议,是一个无连接的简单的面向数据报的运输层协议. udp不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地. udp在 ...
- vue实例属性的方法
1.$mount() 手动设置挂载点 eg:vm.$mount("#app") 2.$destroy() 销毁 eg:vm.$destroy(); 3.$forceUp ...
- IIS 部署.netcore 500.19错误
错误原因,没有安装 DotNetCore.2.0.5-WindowsHosting.exe 即托管程序,具体可以先检查IIS模块中有没有AspNetCoreModule,有则说明已安装,反正则无
- 从锅炉工到AI专家(9)
无监督学习 前面已经说过了无监督学习的概念.无监督学习在实际的工作中应用还是比较多见的. 从典型的应用上说,监督学习比较多用在"分类"上,利用给定的数据,做出一个决策,这个决策在有 ...