1. List特点
序列----有序列表
- 允许存放重复的元素
- 有序 ----存储的顺序
- 可以在任何位置上插入元素,更利于做元素的查找
2.Vector
1. 底层结构动态数组
2. 线程安全 1.2 JDK 版本 默认容量10
3. 不建议使用
3.ArrayList
- 底层结构是动态数组
- 线程不同步
- 更善于做随机访问-遍历
- 添加元素和删除元素的方法 运行速度要比LinkedList慢
package com.openlab.coll;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
public class TelNote {
private Set<List<Person>> set = null;
private List<Person> list = null;
public TelNote() {
set = new HashSet<List<Person>>();
}
/**
* 添加元素
* @param p
*/
public void add(Person p){
if(list == null){
list = new ArrayList<Person>();
}
list.add(p);
set.add(list);
}
/**
* 查找人
* @return
*/
public Person getPerson(String name){
Iterator<List<Person>> it = set.iterator();
while(it.hasNext()){
List<Person> persons = it.next();
for(Person p :persons){
if(p.getName().equals(name)){
return p;
}
}
}
return null;
}
}
package com.openlab.coll;
public class Test1 {
public static void main(String[] args) {
TelNote tel = new TelNote();
for (int i = 0; i < 5; i++) {
tel.add(new Person("zhangsanfeng"+i, 99+i));
}
Person p = tel.getPerson("zhangsanfeng1");
System.out.println(p);
}
}
4.LinkedList
- 底层结构链表
- 有序---有索引
- 线程不同步 线程不安全
- 实现了Queue 说明 它是个队列 FIFO(先进先出)
(LIFO)(后进先出)
- 堆栈的实现 队列的实现 以及双端队列的实现
- LinkedList 更擅长做添加和修改以及删除等操作 运行速度要比ArrayList快
Element
Offer
Poll
Peek
Remove
来自于队列的接口
什么情况下使用ArrayList 什么情况下使用LinkedList
- 随机访问 –遍历 ArrayList
- 插入删除操作较多时 LinkedList
- 线程不安全队列结构 使用 LinkedList
- 线程不安全动态数组 使用ArrayList
5.Stack栈结构
4.package com.openlab.coll;
5.
6.import java.util.LinkedList;
7.import java.util.List;
8.import java.util.Stack;
9.
10.public class ListTest {
11.
12. public static void main(String[] args) {
13.
14. LinkedList<String> list = new LinkedList<String>();
15.
16. list.add("123");
17. list.add("345");
18. list.add("1098");
19. list.add("uuu");
20. list.add("ooo");
21.
22. list.addFirst("123");
23. list.addLast("999");
24.
25. String key = list.element();
26.
27. System.out.println(list);
28. System.out.println(key);
29.
30. list.getFirst();
31.
32. System.out.println(list);
33.
34. list.offer(null);
35.
36. String result = list.peek();
37.
38. System.out.println(result);
39.
40. String result1 = list.poll();
41.
42. System.out.println(list);
43.
44. Stack<String> s = new Stack<String>();
45.
46. s.push("123");
47. s.push("456");
48. s.push("90099");
49. s.push("163");
50. s.push("1200");
51.
52. System.out.println(s);
53.
54. String bRet = s.pop();
55.
56. System.out.println(bRet);
57.
58. }
59.
60.}
6.Map映射
什么map -----映射 ---对应数学中的函数
Map中的key 叫键
Map 中的Value 叫值
总称也叫键值对
Map本身是一个接口与Collection任何关系
Map特点和用法:
1.通常情况下一个key对应一个value
2. 一个key可以对应两个value 但是对应后值会被覆盖
3. 多个key可以对应一个值
Map不存在index 也没有迭代器接口
package com.openlab.coll;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
public class MapTest {
public static void main(String[] args) {
Map<String,String> map = new HashMap<String,String>();
map.put("1", "zhangsanfeng");
map.put("2", "zhangsanfeng");
map.put("3", "zhangsan");
map.put("4", "feng");
map.put("5", "sanfeng");
Set<Entry<String,String>> set = map.entrySet();
Iterator it = set.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
Set<String> setstring = map.keySet();
Iterator it1 = setstring.iterator();
while(it1.hasNext()){
System.out.println(it1.next());
}
Collection list = map.values();
Iterator it2 = list.iterator();
while(it2.hasNext()){
System.out.println(it2.next());
}
// System.out.println(list);
map.remove("2");
System.out.println(map);
}
}