List 元素是有序的,元素可以重复,因为该集合体系有索引
1.ArrayList
底层的数据结构是数组结构。特点:查询速度快,但是增删相对较慢,线程不同步。
2.LinkedList
底层数据采用的是链表结构的。特点:增删较快,查询较慢。
2.Vector
底层的数据结构是数组结构。特点:线程同步,被ArrayList取代了。
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Set:元素师无序的,元素不可以重复。
1.HashSet:
底层是哈希表结构。
HashSet是如何保持数据唯一性的?
是通过元素的两个方法hashCode()和equals()搞定的。
如果元素的hashCode相等则会判断equals()是否返回true。
2.TreeSet:
底层结构是二叉树。
可以对set元素集合进行排序。
保证元素唯一性的依据:comparaTo方法return 0;
(1)TreeSet排序的第一种方法
让其自身具备比较性。元素需实现comparable接口,覆盖comparsTo方法。
comparaTo(Object obj)
{
if(!(obj instanceof Student))
throw new RuntimeException("类型不匹配");
Student stu=(Student)obj;
int num=this.nam.compareTo(stu.name);
return num
}
(2)定义自己的比较器传为参数传入建立TreeSet的初始化中,
实现comparaTo接口 覆盖compare(String s1,String s2)方法。