Collection.一个独立元素的序列,这些元素都服从一条或多条规则。List必须按照插入的顺序保存元素,而Set不能有重复元素。
Map.一组成对的键值对对象,允许使用键来查找值。
有2种类型的List:
基本的ArrayList,长于随机访问元素,但是在List的中间插入和移除元素时较慢。
LinkedList,它通过代价较低在List中间插入和删除操作,提供了优化的顺序访问。LinkedList在随机访问方面相对比较慢。
迭代器Iterator
1、使用方法iterator()要求容器返回一个Iterator.Iterator将准备好返回序列的第一个元素。
2、使用next()获取序列中的下一个元素。
3、使用hashNext()检查序列中是否还有元素。
4、使用remove()将迭代器新近返回的元素删除。
Set:不保存重复的元素。
HashSet:没有排序,使用散列函数。提供最快的查询速度
TreeSet:将元素存储在红-黑树数据结构中,有排序
Map:键值对
HashMap用于快速访问,
TreeMap保持键始终处于排序状态。
Stack 栈通常指后进先出的容器(LIFO),LinkedList能够实现栈的所有功能的方法。
Queue:队列(先进先出)
public static void testList(){
List<Integer> list = new ArrayList<>();
list.add(1);list.add(2);list.add(3);list.add(4);list.add(5);list.add(6);list.add(7);
System.out.println(list.toString());
Iterator it = list.iterator();
while (it.hasNext()){
int i = (Integer) it.next();
System.out.println(i);
}
System.out.println(list.toString());
it = list.iterator();
for (int i = 0; i < 3; i++) {
it.next();
it.remove();
}
System.out.println(list.toString());
}
public static void testLinkedList(){
LinkedList<Integer> list = new LinkedList<>();
list.add(1);list.add(2);list.add(3);list.add(4);list.add(5);list.add(6);list.add(7);
System.out.println(list.toString());
System.out.println("getFirst():"+list.getFirst());
System.out.println("getLast():"+list.getLast());
System.out.println("element():"+list.element());
System.out.println("peek():"+list.peek());
System.out.println("remove():"+list.remove());
System.out.println("removeFirst():"+list.removeFirst());
System.out.println("poll():"+list.poll());
System.out.println(list.toString());
System.out.println(list.pop());
System.out.println(list.toString());
list.addFirst(8);
list.offer(9);
list.addLast(10);
System.out.println(list.toString());
list.push(11);
System.out.println(list.toString());
list.pop();
System.out.println(list.toString());
}
public static void testMap(){
Map<Integer,String> map = new HashMap<>();
map.put(1,"10");map.put(2,"20");map.put(3,"30");map.put(4,"40");
System.out.println(map.keySet()); // 获取键
System.out.println(map.values()); // 获取值
// keySet
for (Integer i : map.keySet()){ // 根据键获取值
System.out.println(i+" "+map.get(i));
}
// entrySet
Iterator iterator = map.entrySet().iterator(); // 获取key和value的Set
while (iterator.hasNext()){
Map.Entry entry = (Map.Entry) iterator.next();
System.out.println(entry.getKey());
System.out.println(entry.getValue());
}
// keySet
Iterator it = map.keySet().iterator();
while (it.hasNext()){
int key = (int) it.next();
String value = map.get(key);
System.out.println(key+" "+value);
}
}
/**
* 队列:先进先出
* offer(Object o)
* poll()
*/
public static void testQueue(){
Queue queue = new LinkedList();
queue.offer(1);queue.offer(2);queue.offer(3);queue.offer(4);
System.out.println(queue.toString());
System.out.println(queue.poll());
System.out.println(queue.toString());
}
/**
* 栈:先进后出
* push(Object 0)
* pop()
*/
public static void testStack(){
LinkedList stack = new LinkedList();
stack.push(1 );stack.push(2 );stack.push(3 );stack.push(4 );
System.out.println(stack.toString());
System.out.println(stack.pop());
System.out.println(stack.toString());
}