文档章节

java集合

五大三粗
 五大三粗
发布于 2015/01/20 23:03
字数 791
阅读 11
收藏 0
Collection: 一个对象是该集合中的一个元素


List : 容许在集合中存在相同的对象
Set  : 不容许在集合中存在相同的对象


Map:一组对象是该集合中的一个元素,该元素分为键部分和值部分
键部分不容许重复,但值部分容许重复


有序集合:List   和数据库映射时没有必要通过遍历集合来使用其中元素


无序集合:Set,Map 必须通过遍历集合来使用其中元素


HashSet,HashTable,HashMap的区别


(1)HashSet是set的一个实现类,hashMap是Map的一个实现类
(2)这个不同即是最重要的一点:Hashtable中的方法是同步的,而HashMap方法(在缺省情况下)是非同步


的。即是说,在多线程应用程序中,不用专门的操作就安全地可以使用Hashtable了;而对于HashMap,


则需要额外的同步机制。但HashMap的同步问题可通过Collections的一个静态方法得到解决:
      Map Collections.synchronizedMap(Map m)
这个方法返回一个同步的Map,这个Map封装了底层的HashMap的所有方法,使得底层的HashMap即使是在


多线程的环境中也是安全的。


(3)只有HashMap可以让你将空值作为一个表的条目的key或value。HashMap中只有一条记录可以是一个


空的key,但任意数量的条目可以是空的value。这就是说,如果在表中没有发现搜索键,或者如果发现


了搜索键,但它是一个空的值,那么get()将返回null。如果有必要,用containKey()方法来区别这两


种情况。




其它的一些资料:


1.HashTable的方法是同步的,HashMap未经同步,所以在多线程场合要手动同步HashMap这个区别就像


Vector和ArrayList一样。(最主要的区别)


    2.HashTable不允许null值(key和value都不可以),HashMap允许null值(key和value都可以,只容许


有一个null值的key,可以有多个null值的value)。


    3.HashTable有一个contains(Object value),功能和containsValue(Object value)功能一样。


    4.HashTable使用Enumeration,HashMap使用Iterator。


以上只是表面的不同,它们的实现也有很大的不同。


    5.HashTable中hash数组默认大小是11,增加的方式是 old*2+1。HashMap中hash数组的默认大小是


16,而且一定是2的指数。




HASHSET和TREESET区别


1、Treeset中的数据是自动排好序的,不允许放入null值 ,而且必须放相同的类型,放不同的类型就会


报错。TreeSet里面的对象都实现Comparable接口.


2、HashSet中的数据是无序的,可以放入null,但只能放入一个null,两者中的值都不能重复,就如数


据库中唯一约束 


3、HashSet要求放入的对象必须实现HashCode()方法,放入的对象,是以hashcode码作为标识的,而具


有相同内容的String对象,hashcode是一样,所以放入的内容不能重复。但是同一个类的对象可以放入


不同的实例 

© 著作权归作者所有

共有 人打赏支持
五大三粗
粉丝 163
博文 2273
码字总数 4723756
作品 0
广州
程序员
私信 提问
一份关于 Java、Kotlin 与 Android 的学习笔记

JavaKotlinAndroidLearn 这是一份关于 Java 、Kotlin 、Android 的学习笔记,既包含对基础知识点的介绍,也包含对一些重要知识点的源码解析,笔记的大纲如下所示: Java 重拾Java(0)-基础知...

叶应是叶
2018/08/08
0
0
System.getProperty("user.dir")

System.getProperty("user.dir"); 获得系统属性 getProperties public static Properties getProperties() 确定当前的系统属性。 首先,如果有安全管理器,则不带参数直接调用其 checkPrope......

小落i
2014/03/27
0
0
从 Java 代码到 Java 堆

从 Java 代码到 Java 堆 分析是一种美德,PS原文地址:http://www.ibm.com/developerworks/cn/java/j-codetoheap/ 理解和优化您的应用程序的内存使用 本文将为您提供 Java™ 代码内存使用情况...

北极之北
2016/03/10
568
3
-1-0 Java 简介 java是什么 java简单介绍

Java是一门纯粹的面向对象的高级的平台无关的编程语言 官网介绍: 了解 Java 技术 https://www.java.com/zh_CN/about/ 推荐词条: https://zh.wikipedia.org/wiki/Java https://zh.wikipedia.o...

noteless
2018/07/03
0
0
Scala学习(三)数组相关操作

1.定长数组 如果你需要一个长度不变的始祖,可以使用Scala中的Array。例如: 2.变长数组:数组缓冲 对于那种长度有变化的数组,Java有ArrayList,C++有vector。Scala中有等效的数据结构Array...

我爱春天的毛毛雨
2018/09/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

nginx反向代理配置去除前缀

使用nginx做反向代理的时候,可以简单的直接把请求原封不动的转发给下一个服务。设置proxy_pass请求只会替换域名,如果要根据不同的url后缀来访问不同的服务,则需要通过如下方法: 方法一:...

架构师springboot
21分钟前
1
0
QianBill API 开发笔记

JWT

BeanHo
32分钟前
3
0
Elasticsearch实战篇——Spring Boot整合ElasticSearch

当前Spring Boot很是流行,包括我自己,也是在用Spring Boot集成其他框架进行项目开发,所以这一节,我们一起来探讨Spring Boot整合ElasticSearch的问题。 本文主要讲以下内容: 第一部分,通...

JAVA_冯文议
41分钟前
3
0
不错的linux下通用的java程序启动脚本

#!/bin/sh#该脚本为Linux下启动java程序的通用脚本。即可以作为开机自启动service脚本被调用,#也可以作为启动java程序的独立脚本来使用。##Author: tudaxia.com, Date: 2011/6/7...

sprouting
今天
3
0
Linux manjaro系统安装后无法连接wifi,解决方案

笔记本为联想 thinkpad E480 首先通过命令lspci -k看一下原因是否为缺少wifi驱动,如下,如果没有Kernel driver in use,说明缺少驱动。 05:00.0 Network controller: Realtek Semiconducto...

bluecoffee
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部