(1) Collection 接口常用的子类有两个:List接口和Set接口
(2) List接口,有序的 collection(也称为序列)。此接口的用户可以对列表中每个元素的插入位置进行精确地控制。用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素。
package cn.itcast.String;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
public class ListDemo {
public static void main(String[] args) {
function();
}
private static void function1() {
//多态调用
List<Double> list = new ArrayList<Double>();
list.add(12.0);
list.add(11.0);
list.add(10.0);
list.add(9.0);
list.set(3, 1.0);
list.remove(0);
//工具类提供的排序方法
Collections.sort(list);
System.out.println(list);
}
private static void function() {
List<String> list = new ArrayList<String>();
list.add("abc1");
list.add("cbc2");
list.add("bbc3");
list.add("dbc4");
/*
* //使用迭代器获取集合中的元素 Iterator<String> it = list.iterator();
* while(it.hasNext()){ String s = it.next(); if(s.equals("abc1")){
* list.set(2, "a"); }
*/
Collections.sort(list);
for (String s : list) {
System.out.println(s);
}
}
}
(3) Set接口,一个不包含重复元素的 collection。不允许存放重复的元素,而List接口中允许存放重复的元素。
package cn.itcast.Set;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
/*
* set接口,特点不重复元素
* 无索引
*/
public class SetDemo {
public static void main(String[] args) {
Set<String> set = new HashSet<String>();
set.add("cn");
set.add("itcast");
set.add("itheima");
set.add("java");
Iterator<String> it = set.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
System.out.println("====================");
for (String i : set) {
System.out.println(i);
}
}
}
(4)List接口常用的子类有ArrayList和Linkedlist,其中Linkedlist采用链表的形式存储元素,增删快,但是查询效率低,并且Linkedlist类提供了大量的首尾操作的方法,如
(a) void addFirst(E e)
将指定元素插入此列表的开头。
(b) void addLast(E e)
将指定元素添加到此列表的结尾。
(5)Set接口常用的两个实现类是HashSet(无序,允许存在null元素,无索引一说)和LinkedHashSet
这里有个重要的知识点:哈希表的存储过程
图片用了老师画的
这里sun公司官方规定了,只要两个对象的equails方法返回值为true,则两个对象的哈希值一定相同
LinkedHashSet继承自HashSe,自身特性有:
具有顺序(比较异类?),存储顺序和取出顺序一样