java学习笔记第23天2018.09.25——集合、泛型
jdk1.2:
Collection:
–List:有序可重复
–ArrayList:底层数据结构为:数组,数据会在连续的空间内。查找和修改效率快,添加和删除效率慢。–线程不安全。
–LinkedList:底层数据结构为:链表结构。数据可以不再连续的空间内容。查找和修改效率慢,添加和删除效率快。–线程不安全。
–Vector:底层数据结构为:数组,数据会在连续的空间内。线程安全。增删改查效率都慢。
–Set:无序不可重复
–HashSet:底层数据结构为:哈希表算法。
元素唯一:1.hashCode
2.equals
–LinkedHashSet:
有序不可重复
–TreeSet:存储的元素可以按照自然顺序进行排序。
底层数据结构:二叉树
当存储自定义对象时,自定义对象不具备比较时,
1.需要实现Comparable接口,实现compareTo方法,建立比较大小的方式。
2.都是需要实现Comparator接口,实现compare方法,建立比较大小的方式。
无论使用哪种方法,都是根据实现的方法的返回值进行排序,方法的返回值是正整数 0 负整数
• 注意:
1.向TreeSet集合中存储的元素,如果是不同类型,并且没有继承关系,则不能存入
2.向TreeSet集合中存储的元素,元素有继承关系,并且父类实现了Comparable,那么集合可以存储父类和子类元素,并且可以排序。
集合框架:
Collection:
List:有序可重复
ArrayList:数组结构,数据都会在连续的空间内。查找快,增删慢。线程不安全。
LinkedList:链表结构,数据可以在不同的空间内。查找慢,增删块。线程不安全。
Vector:数组结构,数据都会在连续的空间内。线程安全,增删改查都慢。
Set:无序不可重复
HashSet:哈希表结构。
保证元素唯一:
1.hashCode 方法
2.equals方法
LinkedHashSet:
有序不可重复,链表+哈希表算法
TreeSet:二叉树结构,元素可以按照自然顺序进行排序。
保证元素唯一:
1.实现Comparable接口,覆盖compareTo方法
2.定义类实现Comparator接口,覆盖compare方法
add,size,remove
Map:
映射,存储一对一对的数据的。 key键-value值。key不可以重复,value可以重复。
---HashMap
:key采用的哈希表算法,依赖的是hashCode和equals方法
允许null作为key和value
线程不安全
---HashTable:
:key采用的哈希表算法,依赖的是hashCode和equals方法
不允许null作为key和value
线程安全
存入的顺序和取出的顺序不一定一致。
---TreeMap
:key采用的二叉树算法,key可以按照自然顺序排序。
如果key是自定义对象:
1.自定义类实现Comparable接口,覆盖compareTo方法,建立排序方式
2.定义类实现Comparator接口,覆盖compare方法,建立排序方法。
并将实现类对象传给TreeMap的构造方法
工具类:
Collections:
Comparator reverseOrder():按照默认方式反转比较
Comparator reverseOrder(Comparator com) :按照指定的比较器反转比较
sort(List list):将list集合进行默认排序
sort(List list,Comparator com):将list集合按照器比较器方式排序
Arrays:
List asList(Object… obj):将数组转成集合
sort(数组):将数组按照默认方式进行排序
String toString(数组):将数组转成字符串
binarySearch(数组,key):二分查找指定数组中是否包含指定的key,如果包含返回key对应的下标,
如果不包含,返回负数。
Collection类中:
Object] toArray():将集合转成数组
枚举类:
jdk5.0
控制某个类能创建的对象的个数。
也是类,只不过是一个特殊的类
修饰符 enum 枚举类名{
枚举对象名
成员变量
构造方法
普通方法
抽象方法
}
泛型技术:
jdk5.0,安全机制
<元素类型>:只能写引用类型