黑马程序员技术交流社区
标题:
刚学习了集合类,听的时候能听懂,但是整体上感觉思路混乱
[打印本页]
作者:
王利强
时间:
2012-3-20 22:44
标题:
刚学习了集合类,听的时候能听懂,但是整体上感觉思路混乱
刚学习完了集合类,collection与Map之间是什么关系?为什么毕老师所展示的图片上写的是Map---produces--->collection,另外set中的hashSet与treeSet,Map中的hashMap和treeMap都什么时候用啊?区别到底是什么,最好能说的仔细点,比如说哪个可以排序,如何排?比较器中需要重写那些方法,这些我都搞混了,求高手帮忙。
作者:
陈从宾
时间:
2012-3-20 22:59
这是容器类的继承关系,您仔细看看
w.JPG
(34.3 KB, 下载次数: 28)
下载附件
2012-3-20 22:59 上传
作者:
李飞
时间:
2012-3-20 22:59
Set接口 Set集合无序、不可重复
实现类:
HashSet:底层数据结构哈希表
TreeSet:底层数据结构二叉树,可以对集合进行排序
当我们需要对TreeSet集合中的元素不具备比较功能,或是比较功能不适合时,需要让集 合自身有比较性。这时就需要自定义一个比较器。
解决方案:
1)集合元素自身具备比较性,集合元素类实现Comparable接口,compareTo方法,提供自然排序方法
2)集合具备比较性。比较器,实现Comparator接口,compare方法。
当有比较器的时候,以比较器为主
记忆:Comparable接口的obj1.compareTo(obj2)和元素比较,自然排序用
Comparator接口的compare(obj1,obj2)比较器,顾名思义要传两个对象
如何确定元素的唯一性?
HashSet依赖的是元素的hashCode()和equals()方法,:
1)首先判断元素哈希值
2)哈希值不同,不需要再判断元素的equals()方法,返回false
3)哈希值相同,判断equals()方法。如果equals()方法相同返回true,视为同一个元素;不同返回false,视为不同的元素,会存储在同一个哈希值上
4)所以我们要重写hashCode()和equals()方法,hashCode()用来判断集合元素对象,而equals()用来判断元素对象的属性值是否相同
TreeSet根据比较方法返回值,负数,放左边,整数放右边,零就代表重复
双序列集合Map
1)一次存一对元素,以键值对的形式<k,v>
2)Map集合中的键必须确定唯一性
取出集合元素两种方法:
1)通过keySet()取出集合所有的键,对应Set集合,遍历Set集合取出key对应的value
2)通过entrySet()取出键值映射的关系,对应Set集合,遍历Set集合,取得键和值
这种取法,可以把一组键值看成是一个封装的对象^_^(个人理解)
Hashtable:底层哈希表,同步,线程安全,不允许null作为键
Properties,多用于配置文件的定义和操作,键值之间通过=,都是字符串
HashMap:底层哈希表,不同步,线程不安全,运行null作为键,null作为值
LinkedHashMap:有序,存入和取出的顺序一致
TreeMap:可以对集合的键进行排序
作者:
叶绍亮
时间:
2012-3-20 23:03
Collection 和 Map 的区别
容器内每个为之所存储的元素个数不同。
Collection类型者,每个位置只有一个元素。
Map类型者,持有 key-value pair,像个小型数据库。
Collection
--List:将以特定次序存储元素。所以取出来的顺序可能和放入顺序不同。
--ArrayList / LinkedList / Vector
--Set : 不能含有重复的元素
--HashSet / TreeSet
Map
--HashMap
--HashTable
--TreeMap
Collection、List、Set、Map都是接口,不能实例化。
继承自它们的 ArrayList, Vector, HashTable, HashMap是具象class,这些才可被实例化。
Collections
Collections是针对集合类的一个帮助类。提供了一系列静态方法实现对各种集合的搜索、排序、线程完全化等操作。
相当于对Array进行类似操作的类——Arrays。
如,Collections.max(Collection coll); 取coll中最大的元素。
Collections.sort(List list); 对list中元素排序
在各种Sets中,HashSet通常优于HashTree(插入、查找)。只有当需要产生一个经过排序的序列,才用TreeSet。
HashTree存在的唯一理由:能够维护其内元素的排序状态。
在各种Maps中
HashMap用于快速查找。
当元素个数固定,用Array,因为Array效率是最高的。
作者:
贠(yun)靖
时间:
2012-3-20 23:16
http://bbs.itheima.com/forum.php ... amp;extra=#pid50554
这是我总结的 前段时间发的帖子 你看看吧
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2