JAVA基础知识总结:十五

一、Set接口
Set集合不允许包含相同的元素,如果试图将两个相同的元素添加到一个集合中,使用add方法,添加失败,返回false
1、HashSet
HashSet是Set集合的一个实现类,大多数情况使用它

特点:
a,排重(相同的元素不能被重复添加)
原理:如果两个对象的hashCode相同,并且通过equals方法比较返回的结果也是相同的,HashSet集合会认为这两个元素是同一个,集合中只会被添加一次
b。无序的(元素的添加的顺序和底层存储的顺序不同,是随机的,是由一套算法决定的,每次的顺序很可能不一样)
c.集合元素值可以是null
d.底层存储采用的数据结构是哈希算法,具有很好的存取和查找功能
原理:hashCode值决定了元素在内存中的存储地址,可以通过hashCode值就可以访问到集合的元素

 

2.LinkedHashSet
是hashSet的一个子类,使用和HashSet基本相同

特点:
a.排重的
b。有序的(元素的添加顺序和底层的存储顺序相同)
c。底层存储采用的数据结构是链表


3.TreeSet
是Set接口的一个实现类,同时也是SortedSet接口的唯一实现类,可以确保集合元素处于排序状态

特点:
a.排重的
b.有序的
c.底层存储采用的数据结构是二叉树(红黑树)(数据结构)


排序方式:
a。自然排序
TreeSet会调用集合元素的compareTo()方法比较元素之间的大小关系,然后按照升序进行排序

Java提供了一个Comparable接口,这个接口里有compareTo()方法,该方法返回一个整数。实现该接口的类必须重写compareTo()方法
规则是:
obj1 compareTo(obj2):
0:相等
正整数:obj1 > obj2
负整数:obj1 < obj2

Java中的一些常用类已经实现了Comparable接口,并重写了compareTo()方法,提供了比较大小的一套标准,Integer、Character(unicode编码)、Boolean(true > false),String(unicode编码),Date(后面的日期比前面的日期大)

b.定制排序
如果要实现降序排序,可以采用定制排序,主要需要实现一个Comparator接口,其中包含了一个compare()方法

规则:
int compare(obj1,obj2)
0:相等
正整数:obj1 > obj2
负整数:obj1 < obj2


二、Map接口
Map同样是一个集合的接口,同样用来存储引用数据类型,变长的容器,主要用于保存具有映射关系的数据,Map中的元素是以键值对的形式存在的
key:键
value:值
userName:zhangsan
password:1243134


key和value之间是单向的一对一的关系,可以通过指定的key就可以找到对应的value

特点:
a.Map中的元素是以键值对的形式存在的,一个键对应一个值,不允许只有键没有值,也不允许一个键对应多个值
b.Map中的元素是按照键进行排重的,Map中的键不允许重复,如果添加相同的键,这时后添加的会覆盖原来的
c。键和值都是引用数据类型
d.键和值可以为null(针对部分)

1.HashMap
特点:
a.无序的,
b.底层存储采用的数据结构是哈希算法


2.LinkedHashMap

特点:
a.有序的,
b.底层存储采用的数据结构是链表

 

3.Hashtable
Hashtable和HashMap之间的关系就相当于是Vector和ArrayList之间的关系

区别:
a.在用法上和HashMap基本相同
b.Hashtable是一个古老的Map实现类(JDK1.0开始就存在了)
c。Hashtable是线程安全的,HashMap是不安全的,推荐使用HashMap、
d.Hashtable的性能比HashMap的低
e.Hashtable是不允许将null作为键和值的。如果试图将null添加到Hashtable中时,将引发NullPointerException,

4.TreeMap
TreeMap是Map集合的一个实现类,同时也是SortedMap的实现类

特点:
a.有序的
b.底层存储采用的数据结构是二叉树(红黑树)


TreeMap中的排序主要针对的是Key
排序方式:自然排序和定制排序


5.Map的遍历、

a.增强for循环
b迭代器Iterator
c。entrySet

三、Collections工具类(Arrays工具类)



四。集合的总结

1.是否排重
XxxxxxList:不排重
XxxxxxSet:排重
XxxxxMap:按照键排重

2.底层存储的数据结构
ArrayList:数组结构
HashXxxxx:哈希算法
LinkedXxxx:链表
TreeXxxx:二叉树(红黑树)

3.是否有序
HashXxxx:无序的
LinkedHashXxxx:有序的

 

posted @ 2017-10-27 14:51  贩卖长江水  阅读(154)  评论(0编辑  收藏  举报