`

java 集合类 Hashset和TreeSet

阅读更多
HashSet:

这种数据结构的出现都是为了能够更快的操作集合元素,将含有相互兼容hashcode()和euqls()方法的元素散列到散列表的表元里面,hashcode()和equals()方法的兼容是指:对于有obj1.equals(obj2)返回true的元素必须有相同的hashcode值。



TreeSet:

这种数据结构的出现是为了弥补HashSet不能对元素排序的缺点,如果要插入自定义的对象,则要求该类实现Comparable接口,即实现compareTo()方法定义一个排序的策略。那么当一个元素被添加到树集时,将会被放置到适当的位置,之后若是用迭代器迭代元素时,集合元素将会按照一定顺序被迭代。


由于需要对元素排序,在TreeSet中添加元素到散列表中的速度将比HashSet慢,但是任然比将元素添加到数组或是链表的恰当位置要快,需要log2(n)次比较;



此外: 若元素没有实现Comparable接口或是不想实现它,但想对元素进行排序或是可能需要几种排序方式,那么也可以这样实现,就是给TreeSet传递一个"函数对象"进去,如下:
TreeSet tempCom = new TreeSet(new Comparator(){  
			public int compare(Object a,Object  b) {  
				int result = customerCompare(a,b);//自定义的比较策略
				return result;
			}
		});


函数对象:一个瞬时的对象,匿名内部类的一个实例。

分享到:
评论

相关推荐

    【Java面试+Java学习指南】 一份涵盖大部分Java程序员所需要掌握的核心知识

    ava基础 基础知识 面向对象基础 Java基本数据类型 string和包装类 final关键字特性 Java类和包 抽象类和接口 ...Java集合详解7:HashSet,TreeSet与LinkedHashSet Java集合详解8:Java集合类细节精讲 JavaWeb

    Java集合框架完整说明便于了解集合

    java集合在日常开发中经常用到,对基础的掌握尤其重要,其中List,Set,Map的作用以及使用的场景和分类描述,其中Arraylist 与 LinkedList 区别,HashSet与TreeSet与LinkedHashSet对⽐,LinkedHashMap和HashMap,...

    java集合类原理面试题

    java集合类 Java中有哪些容器(集合类)? 线程安全和线程不安全的分别有哪些? Map接口有哪些实现类? 描述一下Map put的过程 如何得到一个线程安全的Map? HashMap有什么特点? ConcurrentHashMap是怎么分段分组...

    Java 集合方面的面试题

    HashSet 和 TreeSet 有什么区别? HashMap 和 TreeMap 有什么区别? 什么是迭代器?如何使用它来遍历集合? 什么是 fail-fast 机制? 如何使用 Collections 类对集合进行排序? 什么是 Comparable 和 Comparator ...

    实验05 Java集合.doc

    2)了解Set接口及主要实现类(HashSet、TreeSet) 3)了解List接口及主要实现类(ArrayList、LinkedList、Vector) 4)了解Map接口及主要实现类(HashMap、TreeMap、HashTable) 二、实验内容及步骤 1、编写程序...

    java集合类学习与实例

    实现类:红色Collection|_____Set(HashSet)| |_____SortedSet(TreeSet)|_____List(LinkedList,ArrayList) Collection:集合层次中的根接口,JDK没有提供这个接口的实现类。Set:不能包含重复的元素,子接口SortedSet是...

    对java基础集合部分(List、HashMap、HashSet、ArrayList等)底层源码的分析与总结

    这篇集合总结一共包括十二节,介绍了一些接口和实现类的底层源码以及基本的增加、删除元素等的操作(包括List、Map、Set接口、ArrayList、Vector、LinkedList、HashSet、TreeSet、HashMap、TreeMap等实现类)。...

    浅谈java集合类以及示例

    聊一聊java 的集合类 概述 Java中集合分为两种类型 第一种:以单个元素存储。其超级父接口是:java.util.Collection; 第二种:以键值对存储。(类似于python的集合)其超级父接口是:java.util.Map; 前者每个位置...

    JAVA SE 开发手册.CHM

    15、JAVA集合框架之Set接口、HashSet类、TreeSet类 16、JAVA集合框架之Map接口、HashMap类、Trelap类、Hashtable类 17、JAVA异常Exception 18、JAVA线程之基础介绍 19、I0流之基本简介 20、I0流之字符流、字节...

    Java集合框架Set接口.pdf

    Set接口的实现类包括HashSet、LinkedHashSet和TreeSet。 HashSet是基于哈希表实现的Set集合,它不保证集合中元素的顺序。由于哈希表的实现机制,HashSet的添加、删除和查找操作都具有很好的性能,时间复杂度为O(1)。...

    疯狂的java讲义源码-Java_study:ideagithub测试

    疯狂的java讲义 源码 这是Java学习中的一些代码以及重要的知识点 1 2018-10-16 熟悉idea中github使用 2 2018-10-17 添加.ignore插件,忽略不必要的文件 ...Java集合,HashSet和TreeSet(无序和有序) 7 2

    Java知识集.docx

    Java知识集是Java编程语言的核心概念和技术,涵盖了Java编程语言的基础知识、面向对象编程、...集合类:包括ArrayList、LinkedList、HashSet、TreeSet等集合类的使用。 反射机制:包括Class、Method、Field等类的使用。

    实验七:Java集合与泛型

    本次实验掌握了集合的概念、体系结构、分类及使用场景,了解了Set接口及主要实现类(HashSet、TreeSet),了解了解List接口及主要实现类(ArrayList、LinkedList、Vector),掌握ArrayList的使用及其与Vector的区别,...

    Java 基础核心总结 +经典算法大全.rar

    节点流和处理流 Java IO 的核心类 File Java IO 流对象 字节流对象InputStream OutputStream 字符流对象Reader Writer 字节流与字符流的转换新潮的 NIO 缓冲区(Buffer)通道(Channel) 示例:文件拷贝案例 BIO 和 NIO ...

    Java后端面试问题整理.docx

    • 熟悉常用集合数据结构(数组、Hashmap、ConcurrentHashMap、HashTable、ArrayList、Vetor、LinkedList、HashSet、TreeSet、LinkedHashSet),了解AVL、RBtree、B/B+树、跳表 • 熟悉常见异常分类以及处理,熟悉反射...

    Java—Set集合详解(HashSet/LinkedHashSet/TreeSet/EnumSet)

    HashSet类 HashSet介绍   HashSet是按照哈希算法进行存储元素的,具有良好的查询和存取性能。 HashSet特点 集合元素值可以为null; 不保证元素的排列顺序,有可能排列顺序与添加顺序不同; 非同步集合,多线程访问...

    Java期末复习-类集框架

    List接口、ArrayList类、Vector类、栈操作类Stack、链表操作类LinkList、队列操作接口Queue、Set接口、HashSet类、TreeSet类、SortedSet接口 双值操作接口Map(key->value)及其子接口、子类: SortedMap接口、HashMap...

    Java面试题,冲冲冲!.rar

    - 常见实现类有HashSet、TreeSet和LinkedHashSet等。 3. Queue(队列): - 以队列的方式存储元素,遵循先进先出(FIFO)的原则。 - 可以在队列的两端进行操作,即添加元素到队尾或移除队首元素。 - 常见实现类有...

    基础深化和提高-java容器

    Java标准库中提供了多种实现Collection接口的类,如ArrayList、LinkedList(List的实现)、HashSet、TreeSet(Set的实现)、PriorityQueue等。 Map: Map用于存储键值对(Key-Value Pair)的数据,它的实现类有...

    java基础核心总结归纳---参考手册--心得手册-学习资料-总结经验

    基础 IO 类和相关⽅法 25 InputStream 25 OutputStream 25 Reader 类 26 Writer 类 26 InputStream 及其⼦类 27 OutputStream 及其⼦类 27 Reader 及其⼦类 28 Writer 及其⼦类 28 注解 28 关于 null 的⼏种处理⽅式...

Global site tag (gtag.js) - Google Analytics