- 浏览: 1042059 次
- 性别:
- 来自: 长沙
文章分类
- 全部博客 (639)
- 服务器配置篇 (58)
- hibernate篇 (14)
- spring篇 (33)
- struts篇 (28)
- JS篇 (46)
- 其他技术篇 (46)
- 数据库集群配置 (6)
- JAVA基础相关 (48)
- 分布式框架HadHoop的应用 (2)
- FLEX篇 (8)
- SQLSERVER技术 (32)
- Android学习 (13)
- amchart学习笔记 (1)
- openfire+smark搭建即时通讯 (9)
- Linux学习 (18)
- Oracle数据库 (15)
- 网站优化技术 (12)
- mysql数据库 (2)
- 项目学习总结 (18)
- 工具类(JAVA) (12)
- 工具类(JS) (2)
- 设计模式 (10)
- Lucene学习 (24)
- EJB3学习 (6)
- Sphinx搜索引擎 (3)
- 工作中用到的软件小工具 (5)
- .NET (49)
- JAVA 连接SQLSERVER2008步骤 (1)
- MongoDB (19)
- Android手机开发 (3)
- Maven (6)
- vue (9)
- Shiro (4)
- mybatis (3)
- netty框架 (1)
- SpringCloud (3)
- spring-cloud (7)
- Git (1)
- dubbo (2)
- springboot (13)
- rocketmq (1)
- git学习 (2)
- kafka服务器 (2)
- linux (10)
- WEB系统辅助项目 (1)
- jenkins (2)
- docker (4)
- influxdb (3)
- python (2)
- nginx (1)
最新评论
-
jiangfuofu555:
这样数据量大,效率怎么样?
sqlserver 实现分页的前台代码 以及后台的sqlserver语句 -
w156445045:
博主请问下,如何做到实时的刷新呢,
另外我后台是Java 谢谢 ...
web 版本的汽车仪表盘,非常好看。还有各种图形 -
jackyin5918:
<transportConnector name=&qu ...
ActiveMQ的activemq.xml详细配置讲解 -
握着橄榄枝的人:
你这个不是spring1.x的吧
spring1.x使用AOP实例 -
xiaophai:
全乱套了!
openfire+spark搭建完美的及时通讯
- package collection.lession2;
- import java.util.HashSet;
- import java.util.Set;
- /**
- * 老紫竹JAVA提高教程(2)-认识Set集合之HashSet。<br>
- * Set用来保存不允许重复的数据。可以是任何对象类型。<br>
- * JDK5以后,主类型可以通过autobox 放入Set里面。
- *
- * @author 老紫竹 JAVA世纪网(java2000.net)
- *
- */
- public class Lession2 {
- public static void main(String[] args) {
- // 普通测试
- testNormal();
- // 测试HashSet的特殊性
- testForHashSet();
- testForHashSet2();
- }
- /**
- * 测试保存混合类型的数据.
- */
- public static void testNormal() {
- System.out.println("----- testNormal -----------");
- // Set有多个实现,我们先看看最常用的HashSet
- Set set = new HashSet();
- // 添加一个字符串
- set.add("字符串");
- // 添加一个整数对象
- set.add(new Integer(1));
- // 利用JDK5的特性,增加一个浮点数
- set.add(123.45);
- // 我们看看集合里对象的数量
- System.out.println(set.size());
- // 我们尝试增加一个重复的字符串
- set.add("字符串");
- // 我们再次看看集合里对象的数量
- System.out.println(set.size());
- // 我们来测试看看是否集合里包含了某个数据
- System.out.println(set.contains(123.45));
- // 我们从里面把这个浮点数删除
- set.remove(123.45);
- // 我们再次看看集合里对象的数量
- System.out.println(set.size());
- }
- /**
- * 专门针对HashSet的测试。
- */
- public static void testForHashSet() {
- System.out.println("----- testForHashSet -----------");
- HashSet<MyObject> set = new HashSet<MyObject>();
- // 增加一个null对象
- set.add(null);
- // 我们再次看看集合里对象的数量
- System.out.println(set.size());
- // 再次增加一个null看看
- set.add(null);
- // 我们再次看看集合里对象的数量
- System.out.println(set.size());
- MyObject obj = new MyObject("java2000", 2);
- set.add(obj);
- obj = new MyObject("csdn", 10);
- set.add(obj);
- // 我们再次看看集合里对象的数量
- System.out.println(set.size());
- // 判断是否包含某个对象
- System.out.println(set.contains(obj));
- obj = new MyObject("java2000_net", 2);
- set.add(obj);
- // 我们再次看看集合里对象的数量
- System.out.println(set.size());
- // 我们尝试把obj再次放入set看看
- // 并没有增加,因为是重复的
- set.add(obj);
- System.out.println(set.size());
- // 我们构造一个新的对象,内容和前面的相同
- obj = new MyObject("java2000_net", 2);
- set.add(obj);
- System.out.println(set.size());
- // 我们修改一下obj里面的年龄,再看看
- obj.setAge(3);
- // 我们再测试看看是否包含此对象。
- // 请注意,我们这个obj和前面的obj是同一个对象
- // 我们仅仅修改了一下我们的年龄
- System.out.println(set.contains(obj));
- // 我们尝试把obj再次放入set看看
- // 我们又增加了长度
- set.add(obj);
- System.out.println(set.size());
- }
- /**
- * 专门针对HashSet的测试2。
- */
- public static void testForHashSet2() {
- System.out.println("----- testForHashSet2 -----------");
- HashSet<MyObject2> set = new HashSet<MyObject2>();
- MyObject2 obj = null;
- for (int i = 0; i < 3; i++) {
- obj = new MyObject2("java2000" + i, i);
- set.add(obj);
- System.out.println(set.size());
- }
- }
- }
- class MyObject {
- private int age;
- private String name;
- public int getAge() {
- return age;
- }
- public void setAge(int age) {
- this.age = age;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- MyObject(String name, int age) {
- this.name = name;
- this.age = age;
- }
- public boolean equals(Object obj) {
- System.out.println("equals");
- if (obj == null || !(obj instanceof MyObject)) {
- return false;
- }
- MyObject o = (MyObject) obj;
- return this.age == o.age && this.name.equals(o.name);
- }
- public int hashCode() {
- int hashCode = name.hashCode() + String.valueOf(age).hashCode();
- return hashCode;
- }
- }
- class MyObject2 {
- private int age;
- private String name;
- public int getAge() {
- return age;
- }
- public void setAge(int age) {
- this.age = age;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- MyObject2(String name, int age) {
- this.name = name;
- this.age = age;
- }
- public boolean equals(Object obj) {
- System.out.println("equals");
- if (obj == null || !(obj instanceof MyObject2)) {
- return false;
- }
- MyObject2 o = (MyObject2) obj;
- return this.age == o.age && this.name.equals(o.name);
- }
- public int hashCode() {
- return 1;
- }
- }
- class MyObject3 {
- private int age;
- private String name;
- // 采用一个变量进行控制
- // 一旦生成了hashCode,则不再变动
- private int HASHCODE = Integer.MIN_VALUE;
- public int hashCode() {
- if (HASHCODE == Integer.MIN_VALUE) {
- // 重新生成本类的hashCode
- HASHCODE = name.hashCode() + String.valueOf(age).hashCode();
- }
- return HASHCODE;
- }
- }
老紫竹JAVA提高教程(2)-认识Set集合之HashSet收藏
新一篇: 济南的初冬,近几年首次在外面单独过周末 | 旧一篇: 老紫竹JAVA基础培训(11),方法的Override
<script></script> 原文地址:http://www.java2000.net/p11767集合在Java里面的作用非凡,我们常用的有Set,List和Map三种,我们先熟悉一下Set,特别是HashSet的使用
- package collection.lession2;
- import java.util.HashSet;
- import java.util.Set;
- /**
- * 老紫竹JAVA提高教程(2)-认识Set集合之HashSet。<br>
- * Set用来保存不允许重复的数据。可以是任何对象类型。<br>
- * JDK5以后,主类型可以通过autobox 放入Set里面。
- *
- * @author 老紫竹 JAVA世纪网(java2000.net)
- *
- */
- public class Lession2 {
- public static void main(String[] args) {
- // 普通测试
- testNormal();
- // 测试HashSet的特殊性
- testForHashSet();
- testForHashSet2();
- }
- /**
- * 测试保存混合类型的数据.
- */
- public static void testNormal() {
- System.out.println("----- testNormal -----------");
- // Set有多个实现,我们先看看最常用的HashSet
- Set set = new HashSet();
- // 添加一个字符串
- set.add("字符串");
- // 添加一个整数对象
- set.add(new Integer(1));
- // 利用JDK5的特性,增加一个浮点数
- set.add(123.45);
- // 我们看看集合里对象的数量
- System.out.println(set.size());
- // 我们尝试增加一个重复的字符串
- set.add("字符串");
- // 我们再次看看集合里对象的数量
- System.out.println(set.size());
- // 我们来测试看看是否集合里包含了某个数据
- System.out.println(set.contains(123.45));
- // 我们从里面把这个浮点数删除
- set.remove(123.45);
- // 我们再次看看集合里对象的数量
- System.out.println(set.size());
- }
- /**
- * 专门针对HashSet的测试。
- */
- public static void testForHashSet() {
- System.out.println("----- testForHashSet -----------");
- HashSet<MyObject> set = new HashSet<MyObject>();
- // 增加一个null对象
- set.add(null);
- // 我们再次看看集合里对象的数量
- System.out.println(set.size());
- // 再次增加一个null看看
- set.add(null);
- // 我们再次看看集合里对象的数量
- System.out.println(set.size());
- MyObject obj = new MyObject("java2000", 2);
- set.add(obj);
- obj = new MyObject("csdn", 10);
- set.add(obj);
- // 我们再次看看集合里对象的数量
- System.out.println(set.size());
- // 判断是否包含某个对象
- System.out.println(set.contains(obj));
- obj = new MyObject("java2000_net", 2);
- set.add(obj);
- // 我们再次看看集合里对象的数量
- System.out.println(set.size());
- // 我们尝试把obj再次放入set看看
- // 并没有增加,因为是重复的
- set.add(obj);
- System.out.println(set.size());
- // 我们构造一个新的对象,内容和前面的相同
- obj = new MyObject("java2000_net", 2);
- set.add(obj);
- System.out.println(set.size());
- // 我们修改一下obj里面的年龄,再看看
- obj.setAge(3);
- // 我们再测试看看是否包含此对象。
- // 请注意,我们这个obj和前面的obj是同一个对象
- // 我们仅仅修改了一下我们的年龄
- System.out.println(set.contains(obj));
- // 我们尝试把obj再次放入set看看
- // 我们又增加了长度
- set.add(obj);
- System.out.println(set.size());
- }
- /**
- * 专门针对HashSet的测试2。
- */
- public static void testForHashSet2() {
- System.out.println("----- testForHashSet2 -----------");
- HashSet<MyObject2> set = new HashSet<MyObject2>();
- MyObject2 obj = null;
- for (int i = 0; i < 3; i++) {
- obj = new MyObject2("java2000" + i, i);
- set.add(obj);
- System.out.println(set.size());
- }
- }
- }
- class MyObject {
- private int age;
- private String name;
- public int getAge() {
- return age;
- }
- public void setAge(int age) {
- this.age = age;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- MyObject(String name, int age) {
- this.name = name;
- this.age = age;
- }
- public boolean equals(Object obj) {
- System.out.println("equals");
- if (obj == null || !(obj instanceof MyObject)) {
- return false;
- }
- MyObject o = (MyObject) obj;
- return this.age == o.age && this.name.equals(o.name);
- }
- public int hashCode() {
- int hashCode = name.hashCode() + String.valueOf(age).hashCode();
- return hashCode;
- }
- }
- class MyObject2 {
- private int age;
- private String name;
- public int getAge() {
- return age;
- }
- public void setAge(int age) {
- this.age = age;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- MyObject2(String name, int age) {
- this.name = name;
- this.age = age;
- }
- public boolean equals(Object obj) {
- System.out.println("equals");
- if (obj == null || !(obj instanceof MyObject2)) {
- return false;
- }
- MyObject2 o = (MyObject2) obj;
- return this.age == o.age && this.name.equals(o.name);
- }
- public int hashCode() {
- return 1;
- }
- }
- class MyObject3 {
- private int age;
- private String name;
- // 采用一个变量进行控制
- // 一旦生成了hashCode,则不再变动
- private int HASHCODE = Integer.MIN_VALUE;
- public int hashCode() {
- if (HASHCODE == Integer.MIN_VALUE) {
- // 重新生成本类的hashCode
- HASHCODE = name.hashCode() + String.valueOf(age).hashCode();
- }
- return HASHCODE;
- }
- }
- Set不允许重复
- 允许 null,重复的null只算一个
- 判断是否存在一个数据(是否重复),先判断其hashCode是否存在,若存在再逐个判断hashCode相同的数据是否相等
- 判断是否相等,除了hashCode相等外,还要判断对象引用相等(==),或者 equals
- 如果一个对象的hashCode变动了,会造成找不到这个对象,也就出现了内存泄漏的危险。
发表评论
-
JVM调优总结
2019-07-10 17:14 322https://www.cnblogs.com/andy-zh ... -
JAVA RESULTSET 使用详解
2012-03-20 21:01 3116调用ResultSet中的last()方法时,提示: java ... -
JAVA采用JDBC执行批处理操作注意的问题
2012-03-20 20:50 1938让我们看看如何使用JDBC API在Java中执行批量插入。虽 ... -
java 各种加密算法详细比较
2012-03-15 11:07 2239本篇内容简要介绍BASE64、MD5、SHA、HMAC几种加密 ... -
java:大数据文件写入,读取,分割,排序,合并
2012-03-05 20:21 1991/** * 大数据排序合并 * * @param ar ... -
JAVA 连接池,方便在平时使用
2012-02-21 15:03 1003java连接池使用 -
Java动态代理实现
2012-02-28 09:19 968Java动态代理实现 在目前的Java开发包中包含 ... -
Java Socket实战之五 使用加密协议传输对象
2012-02-16 13:49 1086本文地址:http://blog.csdn.net/kongx ... -
Java Socket实战之四 传输压缩对象
2012-02-16 13:48 977转载:http://blog.csdn.net/kongxx/ ... -
Java Socket实战之三 传输对象
2012-02-16 13:48 640转载:http://blog.csdn.net/kongxx/ ... -
Java Socket实战之二 多线程通信
2012-02-16 13:47 1114本文地址:http://blog.csdn.net/kongx ... -
Java Socket实战之一 单线程通信
2012-02-16 13:46 979转载:http://blog.csdn.net/kongx ... -
java5 新增线程池的使用
2012-02-09 09:26 1110package net.itdos.concurrent; ... -
P2P之UDP穿透NAT的原理与实现
2012-01-11 11:03 1216关键词: P2P UDP NAT 原理 穿透 Traveral ... -
火车票网上订票软件
2012-01-11 09:05 1872JAVA程序GOHOME自动抢票成功!非常棒~~~不多说,直接 ... -
java tcp/ip 通讯服务端和客户端
2011-12-15 08:20 1296java tcp/ip 通讯服务端和客户端 -
java 读取服务器上的某个文件,并解决UTF-8 BOM文件的问号问题
2011-11-28 15:16 1343JAVA读取UTF-8 BOM文件的时候会在文件头产生一个?号 ... -
JAVA 多线程学习笔记
2011-10-12 09:03 1015JAVA 多线程学习笔记 -
XBlink 1.0.0版发布,更轻、更快、更好用
2011-10-09 14:47 1274XBlink 1.0.0版发布,更轻、更快、更好用。 ... -
db4o 文件整理(收缩)
2011-09-29 22:26 1414一直都不敢大胆使用db4o,不是因为它不好用,不稳定,而 ...
相关推荐
这个是关于java语言的hashset集合类的一些基本用法和详解了个方法的使用
HashSetHashSetHashSetHashSetHashSetHashSetHashSetHashSetHashSet
HashSet 是 Java 中的一个集合类,它实现了 Set 接口并提供了...非线程安全:HashSet 类本身不是线程安全的,在多线程环境下需要进行外部同步操作,或者使用 Collections.synchronizedSet 方法封装成线程安全的集合。
HashSet 是一个没有重复元素的集合。接下来通过实例代码给大家介绍java中的hashset相关知识,感兴趣的朋友一起看看吧
主要介绍了HashSet和TreeSet使用方法的区别解析,具有一定借鉴价值,需要的朋友可以参考下
// GOF给出的定义为:提供一种方法访问一个容器(container)对象中的各个元素, // 而又不需暴露该对象的内部细节。 // 学习set对象容器的使用 // set容器中的对象不允许重复 // set容器接口的实现类有HashSet和 ...
什么是HashSet? HashSet实现了Set接口,它不允许集合中有重复的值,当我们提到HashSet时,第一件事情就是在将对象存储在HashSet之前,要先确保对象重写...如果我们没有重写这两个方法,将会使用这个方法的默认实现。。
1:contains判断去重(有序) 此方法的优点的:理解起来比较简单,并且最终得到的集合也是有序...Stream 实现去重功能和其他方法不同的是,它不用新创建集合,使用自身接收一个去重的结果就可以了,并且实现代码也很简洁
本文主要介绍HashMap 和 HashSet的区别,这里整理了详细的资料来说名两者的区别,并说明如何使用该方法,有需要的小伙伴可以参考下
Java不同数据存储类型使用不同遍历方法效率研究 GitHub代码仓库 数据存储类型 ArrayList HashSet HashMap LinkedList 遍历方法 传统遍历方法 for(int i=0;i<list.size();i++) { String str = list.get(i); ... ...
linked_hash_set此库基于元素的插入顺序提供了具有可预测迭代顺序的哈希...与std HashSet的比较常规用法与传统的哈希集非常相似,但是此结构还保持插入顺序。 与HashSet相比,LinkedHashSet使用一个附加的双向链表运行
HashSet 中的 add ()方法会使用 HashMap 的 add ()方法。以下是 HashSet 部分源码: HashMap 的 key 是唯一的,由上面的代码可以看出 HashSet 添加进去的值就是作为 HashMap 的key。所以不会 重复( HashMap 比较...
TrimExcess 方法 将HashSet对象的容量设置为它所包含的元素的实际个数,向上舍入为接近的特性与实现的值。 UnionWith 方法 修改当前的HashSet对象,以包含该对象本身和指定集合中存在的所有元素 给个简单的例子...
HashSet类的用法.pdf Hashtable类的用法.pdf Java语言基础.pdf Math类的常用方法.pdf String与StringBuffer.pdf Vector类的用法.pdf 迭代器Iterator的用法.pdf 反射机制.pdf 访问路经问题.pdf 基于MVC和RMI的分布....
就不能修改这个对象中的那些参与计算哈希值的字段了,否则,对象修改后的哈希值与最初存储进HashSet集合中时的哈希值就不同了,在这种情况下,即使在contains方法使用该对象的当前引用作为的参数去HashSet集合中检索...
这种方法的核心思想是使用一个哈希表(在Java中是HashSet)来存储已经访问过的元素。遍历链表,对于每个元素,检查它是否已经在哈希表中。如果不在,将其添加到哈希表中,并保留在链表中;如果已存在,说明是重复...
记住:如果元素要存储到HashSet集合中,必须覆盖hashCode方法和equals方法。 一般情况下,如果自定义的类会产生很多对象,比如人,学生,书,通常都需要覆盖equals,hashCode方法。 建立对象判断是否相同的依据。...
在Java中,去除单链表中的重复元素可以通过使用哈希集合(HashSet)来实现,该集合用于存储已经遍历过的元素。在遍历链表的过程中,我们将每个元素与集合中的元素进行比较,如果发现重复,则删除链表中的该元素。 ...
本文实例讲述了C#使用foreach语句遍历集合类型的方法。分享给大家供大家参考。具体如下: 这里演示如何实现可与 foreach 语句一起使用的集合类 using System; using System.Collections; public class Tokens: ...