博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java容器学习
阅读量:6382 次
发布时间:2019-06-23

本文共 1539 字,大约阅读时间需要 5 分钟。

hot3.png

java容器:

    容器,顾名思义,就是用来存放东西的道具,但是在我们程序开发中容器的概念就是用来存在我们数据对象的引用。

    往常的数组存储,由于数组开始的长度已经指定,开发过程中不能随意修改,导致了后续的麻烦,而且在存放的类型还必须是相同的类型,因此java API给开发者提供了java 容器,java内的容器类都是继承了Collection接口,再次在进行扩展。

java内的容器主要有List, Set,Map三种

1:List 继承了Collection接口,他的主要实现类主要有ArrayList和LinkedList,Vector,其中ArrayList是顺序结构动态数组表,LinkedList是链表,Vector是向量,Stack实现了Vector,Vector和Stack现在不经常用。下面简要看一下ArrayList和LinkedList

ArrayList:允许null元素,读取速度比较快,但是修改起来比较麻烦,需要将数组整体后移,他的存储空间是连续的

LinkedList:读取速度比ArrayList慢,但是修改起来容易,若果删除或者新增只需要修改指针的指向就行,他的存储空间是不连续的。

Vector:是线程安全的。用的比较少了

2:set继承了Collection接口,他的主要实现类HashSet,set是数学中定义的集合,所以set中的数据没有顺序而且不允许重复,HashSet中存放的是只是对象的值。

2:Map没有继承collection接口,它提供了Key-value的键值对映射,不允许key值有重复,如果有重复那么他会覆盖。他的主要实现类为HashMap和HashTable,TreeMap,LinkedHashMap,WeakHashMap,IdentifyHashMap,我们平常用的比较多的就是HashMap和Hashtable,两者比起来,HashMap是异步的,他提供的键值对的映射,允许null,HashTable是线程安全的,但不允许插入null,

注意一点就是HashMap和HashSet,HashTable的区别:

    HashMap:实现了map接口,由于他是异步的,所以线程不是安全的,如果需要实现线程安全需要用Collection框架下其他路径进行实现,他存放的是键值对,允许为空的值(key和value)都可以,他是用来取代Hashtable的,他计算哈希值是通过键值对来计算,此外他的访问速度比较快,因为他通过一个唯一的key来检索对象,他用put进行添加元素;hashmap采用HashMap.entrySet().iterator()方法进行遍历

    HashSet:实现了set接口,存放的对象指,不允许空的对象,他计算哈希值是通过成员对象来计算哈希值,此外他的访问速度比HashMap慢,他用add进行元素的添加;

    HashTable:他实现了map接口,但是他是线程安全的,他不允许插入null值,Hashtable遍历使用Enumeration()进行遍历,

但是java程序中对set用的比较少,此外HashMap是在jdk5版本以上用来替代Hashtable的,HashMap的线程安全采用Collections.synchronizedMap(hashmap)的方法。

我们平常用的多的是HashMap,ArrayList,LinkedList比较多,Vector和Stack以及set,Hashtable用的比较少,

HashMap,ArrayList,LinkedList三个都不是线程安全的。

转载于:https://my.oschina.net/u/1034481/blog/546976

你可能感兴趣的文章
7.Ajax
查看>>
Linux vi/vim编辑器常用命令与用法总结
查看>>
对于 url encode decode js 和 c# 有差异
查看>>
mysql 修改列为not null报错Invalid use of NULL value
查看>>
epoll源码分析
查看>>
朱晔和你聊Spring系列S1E4:灵活但不算好用的Spring MVC
查看>>
Java使用Try with resources自动关闭资源
查看>>
china-pub十一周年庆,多重优惠隆重登场,千万别错过哟!
查看>>
HDU 3068 最长回文(manacher算法)
查看>>
二叉树
查看>>
手把手教你如何安装水晶易表——靠谱的安装教程
查看>>
Python单例模式(Singleton)的N种实现
查看>>
221. Maximal Square
查看>>
MySQL基础
查看>>
LeetCode35.搜索插入位置 JavaScript
查看>>
5个让人赞不绝口的微信小程序,拒绝占用手机内存!
查看>>
Spring Security整合KeyCloak保护Rest API
查看>>
POS概述
查看>>
containerd发布了CRI修复程序和CVE-2019-5736更新的runc
查看>>
WEB前端开发的思考与感悟
查看>>