该篇文章我们来谈谈Collection单列集合中的成员List和Set的特点及使用姿势。
List特点:有序,有索引,元素可以重复。
实现List接口的类:ArrayList、Vector、LinkedList
Set特点:无序,无索引,元素不可以重复。
实现Set接口的类:HashSet、TreeSet、LinkedHashSet
下面我们来看看实现List接口的类:
ArrayList
public static void demo1(){
//特点查询快,增删慢,线程不安全,不可以存空,效率高
List<String> list = new ArrayList<>();
for (int i = 0; i < 5; i++) {
list.add(""+i);
}
list.add("3");
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()){
System.out.println(iterator.next());
}
}
执行结果:
Vector
public static void demo2(){
//特点查询快,增删慢,线程安全,不可以存空,效率低
List<String> list = new Vector<>();
for (int i = 0; i < 5; i++) {
list.add(""+i);
}
list.add("5");
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()){
System.out.println(iterator.next());
}
}
执行结果:
LinkedList
public static void demo3(){
//特点查询慢,增删快,线程不安全,不可以存空,效率高
List<String> list = new LinkedList<>();
for (int i = 0; i < 5; i++) {
list.add(""+i);
}
list.add("6");
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()){
System.out.println(iterator.next());
}
}
执行结果:
介绍完List集合下面的成员后,我们接下来看看Set集合
HashSet
public static void demo4(){
//存取快,可以写入空,去重原理:必须重写hashCode()和equest()方法
Set<String> set= new HashSet<>();
for (int i = 0; i < 5; i++) {
set.add(""+i);
}
set.add("3");
set.add(null);
Iterator<String> iterator = set.iterator();
while (iterator.hasNext()){
System.out.println(""+iterator.next());
}
}
执行结果:
TreeSet
public static void demo5(){
//有序,不可以写入空,去重原理底层是二叉树
Set<String> set=new TreeSet<>();
for (int i = 0; i < 5; i++) {
set.add(""+i);
}
set.add("3");
Iterator<String> iterator = set.iterator();
while (iterator.hasNext()){
System.out.println(""+iterator.next());
}
}
执行结果:
LinkedHashSet
public static void demo6(){
//数据的插入要逊色于HashSet,有序,可以写入空
Set<String> set =new LinkedHashSet<>();
for (int i = 0; i < 5; i++) {
set.add(""+i);
}
set.add("3");
set.add(null);
Iterator<String> iterator = set.iterator();
while (iterator.hasNext()){
System.out.println(""+iterator.next());
}
}
执行结果:
今天Collection单列集合就介绍到这里,我们下篇再一起探讨一下双列集合Map