Java——单列集合
集合体系分为两种:单列集合,双列集合
Collection是单列集合的根接口,List和Set是collection下的两个实现接口的集合类。
List(有序,可重复)
List接口下有三个实现类分别为:
-
ArrayList(底层使用Object数组实现)
优点: 底层数据结构是数组,查询快,增删慢。
缺点: 线程不安全,效率高 -
Linklist(底层链表数据结构实现)
优点: 底层数据结构是链表,查询慢,增删快。
缺点: 线程不安全,效率高 -
Vector(链表数据结构实现)
优点: 底层数据结构是数组,查询快,增删慢。
缺点: 线程安全,效率低
一些list方法
import java.util.ArrayList;
public class ArrayListDemo {
public static void main(String[] args) {
ArrayList<String> alist = new ArrayList<String>();
alist.add("a");
alist.add("b");
alist.add("c");
alist.add("d");
alist.add("e");
alist.add("a");
alist.add(2, "www");
alist.add(2, "www");
alist.add(2, "www");
alist.add(2, "www");
alist.add(2, "www");
alist.remove(4);//指定位置删除
alist.get(2);//获取指定位置内容
alist.indexOf("e");//第一次出现e的位置
alist.remove("www");//一出指定内容
alist.set(3,"dddd");//指定位置替换
System.out.println(alist);
}
}
set(无序,不可重复)
set接口下有两个实现类为
-
HashSet(底层哈希表支持)
该类由链表保证元素有序
HashSet判断元素唯一时,依靠hashcode()与equals()方法:add方法添加时,先用内容调用hashcode()方法算出hash值(int类型),比较hash值是否相同元素的
-
TreeSet(可以根据元素进行排序)
注: 底层数据结构是红黑树
TreeSet在保证元素的唯一性时,要重写Comparable接口中的Compareto方法
a:自然排序(元素具备比较性):1.Student类中实现 Comparable接口
2.重写Comparable接口中的Compareto方法
b:比较器排序(集合具备比较性):1.单独创建一个比较类,这里以MyComparator为例,并且要让其继承Comparator接口
2.重写Comparator接口中的Compare方法
compare(T o1,T o2) 比较用来排序的两个参数。
TreeSet(Comparator<? superE> comparator)
构造一个新的空 TreeSet,它根据指定比较器进行排序。