Collection(List,Set) vs Map -- Ross.bu
1. Collections是针对集合类的一个帮助类。提供了一系列静态方法实现对各种集合的搜索、排序、线程完全化等操作。
相当于对Array进行类似操作的类——Arrays。
Collections.max(Collection coll); 取coll中最大的元素。
Collections.sort(List list); 对list中元素排序
2、Arrays类,专门用来操作array。arrays中拥有一组static函数,
equals():比较两个array是否相等。array拥有相同元素个数,且所有对应元素两两相等。
fill():将值填入array中。
sort():用来对array进行排序。
binarySearch():在排好序的array中寻找元素。
System.arraycopy():array的复制。
3. Map,Collection
Collection (object)
--List:1.取出来的顺序可能和放入顺序不同。2. allow 重复
--ArrayList / LinkedList / Vector
--Set : 不能含有重复的元素
--HashSet /LinkedHashSet / TreeSet
Map (key-value)
--HashMap
--HashTable
--TreeMap
HashSet内部由HashMap来维护数据/TreeSet内部由TreeMap来维护数据
WeakHashMap是一种节省存储空间的容器,它允许垃圾回收器自动清理那些没有普通引用的“键”和“值”。实际上,WeakHashMap自动使用WeakReference包装了每一个“键”对象。
Note: People always compare Set & List & Map ignoring Collection Interface
List: 1. allow 重复 2.取出来的顺序可能和放入顺序不同(散列)
Set : 1. not allow 重复 2.Set中大量使用Map的实现类
Map : 1. not allow 重复 (key) 2. key --- value 对
Hash: 无论Set List Map 带有Hash字样的结构存取快速 HashSet LinkedHashSet HashMap LinkedHashMap
Tree: 无论Set List Map 带有Tree字样的结构都有排序 TreeSet TreeMap (实际上在TreeSet中是使用了TreeMap的)
Linked: 无论Set List Map 带有Linked字样的结构都有存入顺序 LinkedHashSet LinkedList LinkedHashMap
Sorted: 我们看不到任何Sorted结构其实是因为这些不过是理论上的层次模型,未必真的实用
TreeSet implements SortedSet && SortedSet extend Set 这里可以看出其实Tree结构的所谓排序功能,
其实comparator()定义是在SortedSet 中制定的 同理我们可以推论出来:
TreeMap implements SortedMap && SortedMap extend Map
两个过时的结构 HashTable(Map) Vector(List)
取代他们的结构
HashMap ArrayList
在新程序中,不应再使用过时的Vector、Hashtable和Stack容器
* rehashing 导致 Hash的结构类型在做更新(add,update,delete)会慢下来
* linked 并不是 Sorted 的含义 LinkedHashSet只不过是有个链表在维护存入顺序(先进后出)
* 当元素个数固定,用Array,因为Array效率是最高的.
* Map中元素,可以将key序列、value序列单独抽取出来。
使用keySet()抽取key序列,将map中的所有keys生成一个Set。 (not allowd duplicate)
使用values()抽取value序列,将map中的所有values生成一个Collection。(allowed duplicate)
实战的思考过程
* 考虑是否可以重复 yes --> ArrayList 如果不可以(要求唯一性) --> HashSet 或者 HashMap
* 考虑是否是key - value结构 yes ----> HashMap 然后考虑是否排序 yes --> TreeMap
分享到:
相关推荐
java基本数据结构的实现,以及几种常用的排序算法的实现_java-dataStructure
"Algorithm-100-Days-Of-iOS-DataStructure-Algorithm.zip"这个压缩包提供了一个为期100天的学习计划,旨在帮助iOS开发者深入理解并掌握数据结构和算法。通过这个学习过程,开发者可以提升解决问题的能力,编写出...
在“Algorithm-DataStructure-Algorithm.zip”这个压缩包中,我们可以看到一系列围绕算法和数据结构的学习资源,特别聚焦于每日算法练习。这表明,通过日常的训练,我们可以不断提升自己在这两个关键领域的技能。 ...
DataStructure-Java :rocket: DataStructure-Java for leetcode and The Bule cup Solutions :airplane: 开源练习题库 索引 :triangular_flag: Data structures and Algorithms Data Structures 数据结构 变种 相关...
本资料包"面试-Java一些常见面试题+题解之数据结构-DataStructure.zip"聚焦于Java中的数据结构,旨在帮助求职者更好地准备面试。下面我们将详细探讨其中可能涉及到的一些关键知识点。 1. **数组**: - 数组是最...
数据结构评估问题陈述: 您在澳大利亚的野生动物研究中心工作。 您的朋友Grof对袋鼠如何在野外活动非常感兴趣。 他告诉您,袋鼠是草食性动物,只吃某些食物,例如胡萝卜,苹果等。研究还显示,出于某些目的,雄性...
基数排序_DataStructure-RadixSort
java-dataStructure java数据结构的例子 最简单的树:目前只是一个最简单的树的建立,和常用方法的书写及测试 cn.treedemo.tree包下的MyTree类是内置树的类 cn.treedemo.tree包下的TreeUtiles类是生成树所需要的工具...
在这个压缩包中的"DataStructure-master"目录下,可能包含了各个数据结构的实现源代码,以及对应的算法实例。通过学习这些代码,我们可以深入理解不同数据结构和算法的内部工作机制,同时提升我们的编程技巧和问题...
"java数据结构源码-DataStructure_javaCode:数据结构java"这个项目,正如其标题所示,提供了用Java语言实现的各种数据结构的源代码。这是一份宝贵的学习资源,可以帮助开发者深入理解数据结构的内在工作原理,并能...
这个仓库"DataStructure-in-Java"显然是为了提供一个开源的平台,使开发者能够深入理解并实践Java中的数据结构实现。在这个仓库中,我们可以期待找到各种常用数据结构如数组、链表、栈、队列、树、图等的Java源码...
《面向对象系统分析与设计》三级项目-基础源码(容易重构)包含简易版代码、完整版代码《面向对象系统分析与设计》三级项目-基础源码(容易重构)包含简易版代码、完整版代码《面向对象系统分析与设计》三级项目-...
2. **元组(Tuple)**:元组与列表类似,但它是不可变的,一旦创建就不能修改。元组使用轻量级的结构实现,通常用于存储固定的数据集,提供快速访问。 3. **字典(Dictionary)**:字典是键值对的集合,通过键来查找...
C_DataStructure
"DaTaStRuCtuRe-源码.rar"这个压缩包,很可能包含了多种常用数据结构的实现源代码,例如数组、链表、栈、队列、树、图等,这些源码是学习和研究数据结构的宝贵资源。 1. **数组**:是最基础的数据结构,它将元素...
在这个"DataStructure-Queue"项目中,我们重点关注的是队列这种特定的数据结构。队列是一种先进先出(First In First Out, FIFO)的数据结构,它在日常编程中有着广泛的应用,例如任务调度、打印队列、缓冲区管理等...
《面向对象系统分析与设计》三级项目-基础源码(容易重构)包含简易版代码、完整版代码《面向对象系统分析与设计》三级项目-基础源码(容易重构)包含简易版代码、完整版代码《面向对象系统分析与设计》三级项目-...
积分java源码项目 #1:多项式的代数和微积分截止日期:2019 年 3 月 4 日晚上 11:59 目标 了解ArrayList容器类的设计、实现和使用。 获得使用已经开发的数据结构实现抽象数据类型的经验。 获得面向对象编程概念的...
Fuck-Funny-DataStructure-Algorithms Fuck Funny DataStructure Linked List Heap Algorithms 排序 快速排序 归并排序 桶排序 优先级队列与堆排序 图算法 深度优先搜索 广度优先搜索 May Reference