- 浏览: 1068489 次
- 性别:
- 来自: 长沙
文章分类
- 全部博客 (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搭建完美的及时通讯
SET集合类似一个罐子,一旦把对象丢进SET集合,集合里多个对象之间没有明显的顺序。SET集合里面不允许包含相同的元素,如果试图把两个相同元素加入到一个SET中,则添加操作失败,ADD方法返回FALSE,且新元素不会被加入。
SET集合判断两个对象是不是相同是根据EQUALS方法,也就是说两个对象的EQUALS方法比较返回TRUE,SET集合是不会接受这两个对象。
例如:
public static void main(String[] args) {
Set books = new HashSet();
books.add(new String("Struts2"));
boolean result = books.add(new String("Struts2"));
System.out.println(result);
System.out.println(books);
}
结果:
false
[Struts2]
HashSet特点:
1.不能保证元素的排列顺序,顺序可能变化。
2.HASHSET不是同步的,如果多个线程同时访问,要用代码来保证同步。
3.集合元素可以为NULL。
HASHSET和SET接口有不同的是,他判断两个元素相等的标准时两个对象通过EQUALS方法比较相等,并且两个对象的hashcode方法返回值也相等。
public class A {
public boolean equals(Object obj)
{
return true;
}
}
package com.action;
public class B {
public int hashCode()
{
return 1;
}
}
public class C {
public boolean equals(Object obj)
{
return true;
}
public int hashCode()
{
return 2;
}
}
public static void main(String[] args) {
Set books = new HashSet();
books.add(new A());
books.add(new A());
books.add(new B());
books.add(new B());
books.add(new C());
books.add(new C());
System.out.println(books);
}
结果:
[com.action.C@2, com.action.A@d9f9c3, com.action.B@1, com.action.B@1, com.action.A@757aef]
可以看到,向集合中分别添加了2个A,2个B,2个C,其中C重写equals方法,并且返回TRUE,HAHSCODE方法总是返回2,导致HASHSET将会把2个C对象当成一个对象。而A和B只满足了HASHSET判断对象相同条件的一种,所以如果需要把一个对象放入HASHSET中,如果重写该对象的EQUALS方法,也必须重写该类的HASHCODE方法,规则是2个对象通过EQUALS方法比较返回TRUE,这两个对象的HASHCODE也应该相同。
当向HASHSET中添加可变对象时,必须十分小心,如果修改HASHSET集合中的对象,有可能导致对象与集合中的其他对象相等,从而导致HASHSET无法准确访问对象。
LINKEDHASHSET是HASHSET集合的子类,但是他需要维护元素的插入顺序,性能略低于HASHSET的性能,但在迭代访问SET元素时,性能比较好。
TreeSet是SortedSet接口的惟一实现,可以确保集合元素处于排序状态。
TreeSet,不是根据元素的插入顺序进行排序,而是根据元素的实际值来进行排序的。TreeSet采用红黑树数据结构对元素进行排序,支持两种排序方式,自然排序,和定制排序。默认情况次采用自然排序。(调用集合元素的compareTo方法来比较两个元素的大小,然后按照集合元素升序排列)
试图把一个对象添加进TREESET中,该对象必须实现Comparable接口,否则会抛出异常。因为TreeSet会调用他集合中的compareTo方法与集合中的其他元素进行比较。
判断加入到其中的对象相等的原则:两个对象通过equals比较返回false,通过compareTo比较返回0.
例如:
package com.action;
public class A implements Comparable{
public boolean equals(Object obj)
{
return true;
}
public int compareTo(Object obj) {
// TODO Auto-generated method stub
return 1;
}
}
public static void main(String[] args) {
Set books = new TreeSet();
books.add(new A());
books.add(new A());
System.out.println(books);
}
打印结果:[com.action.A@757aef, com.action.A@d9f9c3]
因为Aequals返回true,compareTo返回1,不满足是同一对象条件,所以保存的是两个对象。
注释:在HashSet和TreeSet集合中只放入不可变对象。如果放入可变对象,当可变对象的属性被修改的时候,容易出错。
List判断两个对象相等只要通过equals方法比较返回TRUE即可。
发表评论
-
JVM调优总结
2019-07-10 17:14 371https://www.cnblogs.com/andy-zh ... -
JAVA RESULTSET 使用详解
2012-03-20 21:01 3157调用ResultSet中的last()方法时,提示: java ... -
JAVA采用JDBC执行批处理操作注意的问题
2012-03-20 20:50 1978让我们看看如何使用JDBC API在Java中执行批量插入。虽 ... -
java 各种加密算法详细比较
2012-03-15 11:07 2293本篇内容简要介绍BASE64、MD5、SHA、HMAC几种加密 ... -
java:大数据文件写入,读取,分割,排序,合并
2012-03-05 20:21 2034/** * 大数据排序合并 * * @param ar ... -
JAVA 连接池,方便在平时使用
2012-02-21 15:03 1032java连接池使用 -
Java动态代理实现
2012-02-28 09:19 1000Java动态代理实现 在目前的Java开发包中包含 ... -
Java Socket实战之五 使用加密协议传输对象
2012-02-16 13:49 1127本文地址:http://blog.csdn.net/kongx ... -
Java Socket实战之四 传输压缩对象
2012-02-16 13:48 1016转载:http://blog.csdn.net/kongxx/ ... -
Java Socket实战之三 传输对象
2012-02-16 13:48 683转载:http://blog.csdn.net/kongxx/ ... -
Java Socket实战之二 多线程通信
2012-02-16 13:47 1150本文地址:http://blog.csdn.net/kongx ... -
Java Socket实战之一 单线程通信
2012-02-16 13:46 1023转载:http://blog.csdn.net/kongx ... -
java5 新增线程池的使用
2012-02-09 09:26 1156package net.itdos.concurrent; ... -
P2P之UDP穿透NAT的原理与实现
2012-01-11 11:03 1252关键词: P2P UDP NAT 原理 穿透 Traveral ... -
火车票网上订票软件
2012-01-11 09:05 1911JAVA程序GOHOME自动抢票成功!非常棒~~~不多说,直接 ... -
java tcp/ip 通讯服务端和客户端
2011-12-15 08:20 1358java tcp/ip 通讯服务端和客户端 -
java 读取服务器上的某个文件,并解决UTF-8 BOM文件的问号问题
2011-11-28 15:16 1435JAVA读取UTF-8 BOM文件的时候会在文件头产生一个?号 ... -
JAVA 多线程学习笔记
2011-10-12 09:03 1071JAVA 多线程学习笔记 -
XBlink 1.0.0版发布,更轻、更快、更好用
2011-10-09 14:47 1314XBlink 1.0.0版发布,更轻、更快、更好用。 ... -
db4o 文件整理(收缩)
2011-09-29 22:26 1483一直都不敢大胆使用db4o,不是因为它不好用,不稳定,而 ...
相关推荐
这是我手写的集合类的xmind思维导图,查看请确保自己本地有安装Xmind,因为无法在博客内上传,只能后台上传.请结合我发布的文章(java随笔(集合(一)))查看.
下面我们将深入探讨Java集合类的一些关键知识点: 1. **ArrayList和LinkedList**: - `ArrayList`:基于动态数组实现的集合,适合频繁的随机访问,但插入和删除元素时效率较低,因为需要移动大量元素。 - `...
java集合类知识总结--思维导图文件xmind xmind文件类型 总结了java常用集合相关问题 包括map、set、list、数组等
本资料包含“集合类.doc”和“java_集合.pdf”,旨在深入探讨Java集合类的相关知识。 首先,Java集合框架的核心接口包括List、Set、Queue和Map。这些接口定义了各种集合的行为,而具体的实现类则提供了实际的数据...
在C++编程中,集合类是STL(标准模板库)的一部分,用于高效地管理和操作数据集合。在微软的MFC(Microsoft Foundation Classes)库中,也提供了集合类的实现,便于开发者处理对象的集合。"Cpp集合类.rar"这个压缩包...
### JAVA编程高级——集合类知识点详解 #### 一、Java中的集合类概述 在Java编程中,集合类是一个非常重要的概念,它主要用于存储和管理对象的集合。与数组相比,集合提供了更多的灵活性,例如动态调整大小的能力...
### 知识点一:网络编程基础 #### 1. IP地址 - **定义**:IP地址(Internet Protocol Address)是互联网协议地址的简称,它为互联网上的每一...希望这些信息能够帮助您更好地理解和掌握网络编程和集合类的基础知识。
根据提供的文件内容,我们可以整理出以下Java相关知识点: JVM(Java虚拟机): JVM是运行Java字节码的虚拟计算机。它负责执行字节码,提供跨平台的兼容性,是Java能够"一次编译,到处运行"的关键所在。 内存区域:...
### 泛型与集合类知识点总结 #### 一、泛型简介 - **定义**:泛型是Java SE 5.0引入的新特性,它允许程序员在编译时检查类型安全,并且所有的强制转换都是自动和隐式的,提高了代码的重用率。 - **作用**: - ...
本文将深入探讨Java集合类泛型的相关知识点,帮助你更好地掌握这个核心概念。 首先,让我们从基础开始。Java集合框架是Java API的一个重要组成部分,它提供了一组接口和实现这些接口的类,用于存储和操作对象的集合...
### Java集合类重要知识点 #### 一、概述 在Java编程中,集合类是一个非常重要的概念,主要用于存储和管理对象的集合。Java集合框架主要包括两大类:`Collection`和`Map`。本篇文章将着重介绍`Collection`部分,并...
### C#中的数组与集合类详解 #### 一、数组的概念与使用 在C#编程中,数组是一种非常重要的数据结构,它允许程序员以一种高效且有序的方式存储多个相同类型的数据项。数组不仅可以帮助简化代码,提高代码的可读性...
### Java集合类学习笔记知识点详解 #### 一、集合框架概述 ##### 1.1.1 容器简介 在Java编程中,容器是用于存储和管理对象集合的重要工具。当我们处理大量的对象时,比如存储多个员工的信息,仅仅依赖于基本的...
在Java编程语言中,集合类是一组...以上是基于教材《40小时掌握java语言之07集合》中的部分内容对Java集合类相关知识点的详细解读。掌握这些知识点对于学习Java编程及在实际工作中使用Java进行项目开发都是至关重要的。
下面将详细讨论相关知识点。 一、集合类的概念 集合类在计算机科学中是一种抽象数据类型,它代表了一个无序的不重复元素序列。C++标准库提供了一种模板类`std::set`,它是红黑树的实现,但这里我们使用数组来模拟...
Java集合类知识点总结 Java集合类是Java语言中最基本的数据结构之一,用于存储和操作对象的集合。下面是Java集合类的相关知识点总结: 集合的定义 集合是只能存储对象的数据结构,对象类型可以不一样,长度可变。...
了解并熟练掌握这些知识点对于在Java集合类相关的面试中脱颖而出至关重要。理解它们的内部工作原理、性能特性以及在不同场景下的适用性,可以帮助开发者编写出更高效、更安全的代码。在准备面试时,不仅要记住这些...
大公司通常会在面试中询问关于Java集合类的问题,以检查候选人的编程能力和知识广度。 Collection接口是Java集合类的基础接口,代表了一组Object,或者说是一组元素。Collection接口有两个标准的构造函数:无参数的...
Java集合类是Java编程语言中处理对象集合的重要工具,它为开发者提供了丰富的数据结构和算法支持。这份讲解文件主要涵盖了Java集合框架的核心概念,包括接口和实现类。 首先,集合框架是一个类库的集合,其核心是...