- 浏览: 148862 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
august_000:
很有道理,我已经亲自测试过了:
public class ...
单例模式之线程安全解析 -
Chris_bing:
一个单例有这么多名堂,最后那个内部类的解决方案很有创意啊,受教 ...
单例模式之线程安全解析
==========================它们的区别===========================
1. HashSet是通过HashMap实现的,TreeSet是通过TreeMap实现的,只不过Set用的只是Map的key
2. Map的key和Set都有一个共同的特性就是集合的唯一性.TreeMap更是多了一个排序的功能.
3. hashCode和equal()是HashMap用的, 因为无需排序所以只需要关注定位和唯一性即可.
a. hashCode是用来计算hash值的,hash值是用来确定hash表索引的.
b. hash表中的一个索引处存放的是一张链表, 所以还要通过equal方法循环比较链上的每一个对象,才可以真正定位到键值对应的Entry.
c. put时,如果hash表中没定位到,就在链表前加一个Entry,如果定位到了,则更换Entry中的value,并返回旧value
4. 由于TreeMap需要排序,所以需要一个Comparator为键值进行大小比较.当然也是用Comparator定位的.
a. Comparator可以在创建TreeMap时指定
b. 如果创建时没有确定,那么就会使用key.compareTo()方法,这就要求key必须实现Comparable接口.
c. TreeMap是使用Tree数据结构实现的,所以使用compare接口就可以完成定位了.
总结:
HashSet无序
TreeSet有序
二者里边不能有重复的对象
=====================================他们的用法======================
1、在HashSet中如何确定对象的唯一呢,在进行集合的操作时,用equal方法来判断对象是否唯一。这里要强调的是,在java里千万要警惕 == 操作符,==是判断两个对象的物理地址的,没有任何业务意义。
源代码如下:
----------------------------------------------------------------------------
2、TreeSet的用法
参考链接:
http://blog.csdn.net/woisnong/article/details/7433453
http://mahilion.blog.163.com/blog/static/1830872952011429112232362/
http://hi.baidu.com/alexandrae2008/item/d770bc871caf285e26ebd9ca
http://www.cnblogs.com/jcli/archive/2011/08/09/2132191.html
题目来自:中视广信2013笔试题
1. HashSet是通过HashMap实现的,TreeSet是通过TreeMap实现的,只不过Set用的只是Map的key
2. Map的key和Set都有一个共同的特性就是集合的唯一性.TreeMap更是多了一个排序的功能.
3. hashCode和equal()是HashMap用的, 因为无需排序所以只需要关注定位和唯一性即可.
a. hashCode是用来计算hash值的,hash值是用来确定hash表索引的.
b. hash表中的一个索引处存放的是一张链表, 所以还要通过equal方法循环比较链上的每一个对象,才可以真正定位到键值对应的Entry.
c. put时,如果hash表中没定位到,就在链表前加一个Entry,如果定位到了,则更换Entry中的value,并返回旧value
4. 由于TreeMap需要排序,所以需要一个Comparator为键值进行大小比较.当然也是用Comparator定位的.
a. Comparator可以在创建TreeMap时指定
b. 如果创建时没有确定,那么就会使用key.compareTo()方法,这就要求key必须实现Comparable接口.
c. TreeMap是使用Tree数据结构实现的,所以使用compare接口就可以完成定位了.
总结:
HashSet无序
TreeSet有序
二者里边不能有重复的对象
=====================================他们的用法======================
1、在HashSet中如何确定对象的唯一呢,在进行集合的操作时,用equal方法来判断对象是否唯一。这里要强调的是,在java里千万要警惕 == 操作符,==是判断两个对象的物理地址的,没有任何业务意义。
源代码如下:
import java.util.HashSet; import java.util.Iterator; import java.util.Set; public class Test4_HashSet { private HashSet<Users> usersSet = new HashSet<Users>(); private void printElement(Set usersSet){ Iterator it = usersSet.iterator(); while(it.hasNext()){ System.out.println(((Users)it.next()).toString()); } } public static void main(String[] args) { Test4_HashSet t4 = new Test4_HashSet(); for(int i=0;i<10;i++){ Users users = new Users("users"+i); t4.usersSet.add(users); } //添加相同字符串users5的对象,要保证HashSet内对象唯一,需重写HashSet中对象继承自Object的equals()和hashCode()方法 Users users = new Users("users"+5); t4.usersSet.add(users); System.out.println("****"+t4.usersSet.size()); t4.printElement(t4.usersSet); } } class Users{ private String usersName; public Users(String usersname){ this.usersName = usersname; } public String getUsersName() { return usersName; } public void setUsersName(String usersName) { this.usersName = usersName; } public String toString(){ return usersName; } //若想实现HashSet中对象的唯一性判断,必须使用对象中的唯一性属性生成hashCode,如usersName.hashCode() @Override public int hashCode() { return usersName.hashCode(); } @Override public boolean equals(Object obj) { return usersName.equals(((Users)obj).getUsersName()); } }
----------------------------------------------------------------------------
2、TreeSet的用法
import java.util.Iterator; import java.util.Set; import java.util.TreeSet; public class Test4_TreeSet { /** * 通过这个程序,还可以测试树集的添加元素的无序性与输出的有序性 */ private Set<User> userSet = new TreeSet<User>(); private void printElement(Set userSet){ Iterator it = userSet.iterator(); while(it.hasNext()){ System.out.println(((User)it.next()).toString()); } } public static void main(String[] args) { Test4_TreeSet t4 = new Test4_TreeSet(); for(int i=0;i<10;i++){ User user = new User("user"+i); t4.userSet.add(user); } User user = new User("user"+5); t4.userSet.add(user); System.out.println("****"+t4.userSet.size()); t4.printElement(t4.userSet); } } /** *TreeSet.add(Comparable o),该方法添加的对象必须实现Comparable接口,否则会报错 *若想实现TreeSet中的对象在插入时自动排序,也必须实现Comparable接口,覆盖compareTo()方法 **/ class User implements Comparable{ private String userName; public User(String username){ this.userName = username; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String toString(){ return userName; } @Override public int compareTo(Object o) { return userName.compareTo(((User)o).toString()); } }
参考链接:
http://blog.csdn.net/woisnong/article/details/7433453
http://mahilion.blog.163.com/blog/static/1830872952011429112232362/
http://hi.baidu.com/alexandrae2008/item/d770bc871caf285e26ebd9ca
http://www.cnblogs.com/jcli/archive/2011/08/09/2132191.html
题目来自:中视广信2013笔试题
发表评论
-
(转)Spring声明式事务配置详解
2013-11-11 16:45 1834Spring声明式事务功能应该是大家应用Spring中使用的最 ... -
(转)Java几款性能分析工具的对比
2013-11-01 14:26 1047来源:http://www.javaweb.cc/langua ... -
HashMap的遍历
2013-11-01 14:15 9111、新建一个HashMap Map<Integer , ... -
java将汉子转换成汉语拼音
2013-11-01 13:51 935import net.sourceforge.pinyin4j ... -
Spring加载properties文件的两种方式
2013-10-31 10:05 0在spring中可以通过下面的方式将配置文件中的项注入到配置中 ... -
动态加载spring .xml中的bean对象
2013-10-30 15:27 0在java中如何取得spring.xml中加载的bean对象? ... -
(转)Spring mvc+hibernate+freemarker(实战)
2013-10-28 19:40 1014http://zz563143188.iteye.com/bl ... -
(转)Java之美[从菜鸟到高手演变]系列之博文阅读导航
2013-10-28 17:00 1746Java之美[从菜鸟到高手演变]系列之博文阅读导航 http: ... -
(转)openssl 制作证书和签名java方法
2013-10-28 15:03 0Win32OpenSSL_Light-0_9_8k.exe ... -
(转)面向接口编程详解
2013-10-25 12:34 5老文章,自己学习。 面向接口编程详解(一) http://w ... -
(转)Java架构师之路:JAVA程序员必看的15本书
2013-10-08 18:24 0作为Java程序员来说,最 ... -
Java获取CPU ID和磁盘ID
2013-09-25 20:18 0原文链接:http://www.rgagnon.com/jav ... -
Java编程之备用程序段
2013-09-25 14:57 0记录一些程序段,供日常备用,持续增加中…… 1. Java中 ... -
(转)Java编程之AOP
2013-09-25 14:45 0链接: http://hw19886200.iteye.com ... -
Java编程之性能优化
2013-09-25 14:28 767最近的机器内存又爆满 ... -
使用axis2传输附件
2013-09-25 10:40 1078服务端Service文件: import java.io. ... -
Java应用程序项目打包成exe文件
2013-09-23 09:16 01.程序打包 首先将程序打成Jar包,打包命 ... -
(转)Java事务处理类型及差异总结
2013-09-18 13:54 1621一、什么是Java事务 ... -
JAVA文件_加密
2013-09-13 16:09 0import java.awt.*; import java ... -
(转)Java 实现Rsa 加密
2013-09-13 16:08 0import java.io.*; public class ...
相关推荐
java8 源码 学习笔记(持续更新中) 所有文章均同步发布到微信公众号【JavaRobot】,...TreeSet HashSet Concurrent源码系列 待完善 JVM(Java虚拟机) 类加载 垃圾回收算法 JavaConcurrent(Java并发系列) 【Java并发系列】
在Java中,Set接口有两个常用的实现类:HashSet和TreeSet。 HashSet类是基于HashMap实现的,因此它在插入、删除和查找元素时具有较好的性能,但不保证元素的顺序。当我们向HashSet中添加元素时,元素的哈希码...
Java 1.6的集合框架是数据存储和操作的核心部分,包括List(如ArrayList和LinkedList)、Set(如HashSet和TreeSet)、Map(如HashMap和TreeMap)接口及其实现。这些接口和类提供了丰富的功能,如添加、删除、查找...
Set接口的实现包括HashSet和TreeSet,HashSet基于哈希表,不允许重复元素;TreeSet基于红黑树,保证排序。Map接口的实现如HashMap、TreeMap和HashTable,HashMap是最常用的,它的底层数据结构是哈希表,解决哈希碰撞...
HashSet和TreeSet实现了Set接口,提供无序和有序两种存储方式。HashMap和TreeMap则对应Map接口,前者基于哈希表,后者基于红黑树,保证了快速查找和排序。 三、多线程 Java 1.6在多线程方面提供了Thread类和...
实习初期,学生主要学习Java基础,包括线程Thread和集合Collection,如ArrayList、LinkedList、HashSet、TreeSet以及HashMap、TreeMap和HashTable等。线程是实现多用户并发操作的关键,而集合则涉及到数据的组织和...
Set集合存储无序、不重复的对象,如HashSet和TreeSet;而Map集合则用于存储键值对,如HashMap和TreeMap。在项目中的ReadData类中,这些集合被用来处理和存储爬取的数据。 MySQL数据库作为数据存储的后端,项目中对...
2. **集合框架**:在JDK 1.6中,集合框架得到了进一步完善,包括List(如ArrayList和LinkedList)、Set(如HashSet和TreeSet)、Map(如HashMap和TreeMap)以及Queue(如ArrayDeque)等接口和实现类。此外,还有泛型...
6. **集合框架**: 集合框架是Java中用于存储和操作对象的重要工具,包括List(如ArrayList和LinkedList)、Set(如HashSet和TreeSet)和Map(如HashMap和TreeMap)。理解它们的区别和应用场景是必要的。 7. **IO流*...
4. **集合框架**:Java集合框架包括List(如ArrayList和LinkedList)、Set(如HashSet和TreeSet)和Map(如HashMap和TreeMap)。理解它们的特性和使用场景,以及迭代器和泛型的概念,对于处理数据存储和检索至关重要...
例如,ArrayList和LinkedList提供了不同的性能特性,HashSet和TreeSet各有其排序规则。1.6还引入了ConcurrentHashMap,为多线程环境下的数据共享提供高效支持。 5. **泛型**:泛型是Java 1.5引入的新特性,1.6版本...
主要包括List(有序且可重复的元素,如ArrayList和LinkedList)、Set(无序且不允许重复,如HashSet和TreeSet)和Map(键值对,如HashMap和TreeMap)。 六、输入输出流 Java的I/O流处理提供了一套完善的读写机制,...
4. **集合框架**:Java集合框架是存储和管理对象的重要工具,包括List(如ArrayList和LinkedList)、Set(如HashSet和TreeSet)和Map(如HashMap和TreeMap)等接口和类,提供了丰富的操作方法。 5. **IO流**:Java...
8. **集合框架**:Java集合框架包括List(如ArrayList和LinkedList)、Set(如HashSet和TreeSet)和Map(如HashMap和TreeMap)等数据结构,它们提供了存储和操作对象的高效方式。 9. **输入/输出流**:Java的I/O流...
此外,集合框架是Java编程中的重要部分,包括List(如ArrayList和LinkedList)、Set(如HashSet和TreeSet)和Map(如HashMap和TreeMap)接口及其实现类,它们用于存储和操作对象。 对于初学者来说,理解IO流和多...
5. **集合框架**:Java集合框架是存储和操作对象的重要工具,包括List(如ArrayList和LinkedList)、Set(如HashSet和TreeSet)和Map(如HashMap和TreeMap)等接口,以及它们的实现类。 6. **IO流**:Java的IO流库...
2. **集合框架**:Java的集合框架是编程的核心部分,包括List(如ArrayList和LinkedList)、Set(如HashSet和TreeSet)、Map(如HashMap和TreeMap)等接口及其实现。JDK 1.8引入了Lambda表达式和Stream API,极大地...
4. **集合框架**:Java2的集合框架是一个强大的工具,包括List(如ArrayList和LinkedList)、Set(如HashSet和TreeSet)、Map(如HashMap和TreeMap)等接口和类,学习如何操作和管理数据。 5. **输入/输出流**:...
5. **集合框架**:Java集合框架是处理对象数组的重要工具,包括List(如ArrayList和LinkedList)、Set(如HashSet和TreeSet)和Map(如HashMap和TreeMap)。学习集合框架有助于提高代码的效率和可维护性。 6. **IO...
2. **集合框架**:Java 1.6引入了完善的集合框架,包括List(如ArrayList和LinkedList)、Set(如HashSet和TreeSet)和Map(如HashMap和TreeMap)等接口及其实现类。这些接口和类提供了高效的数据存储和操作方法。 ...