List、set是继承collection接口。
List、map、set结构如下图:
collection
|-List:元素有放入顺序,元素可以重复。
||-LinkList:底层是基于链表实现的,每一个元素本身的内存地址的同时还存储下一个元素的地址,链表的增加删除快,查找慢。
||-ArrayList:属于非线程安全的,效率高。
||-Vector 属于线程安全的,效率低。
|_set:元素没有放入顺序,元素不可重复,元素虽然是无无放入顺序但是元素在set中的位置是有该元素Hashcode决定的,位置其实是固定的。
set的两个实现类:
HashSet:底层是HashMap实现的。
LinkHashSet:
map:元素键值对存储,没有放入顺序。
|-Hashtable:线程安全的,效率低,不支持null。
|-HashMap:非线程安全的,高效率,支持null。
WeakHashMap:
自认为三者最大的关系在于:List是用来处理序列的,set是处理集的,无序不重复。map存储键值对。
用代码说明List、set、map存取元素的一些特点和差别:
/**
*
*/
package com.weisoft.map;
import java.awt.SystemColor;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.util.Set;
/**
* @author Administrator
*
*/
public class HashMapTest {
private Integer id;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
/**
* @param id
* @param name
* @param num
*/
public HashMapTest(int id, String name, int num) {
this.id = id;
this.name = name;
this.num = num;
}
/**
* void
*
*/
public HashMapTest() {
}
private String name;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getNum() {
return num;
}
public void setNum(Integer num) {
this.num = num;
}
private Integer num;
/**
* List
*
* @author Administrator
* @see:List
*/
@SuppressWarnings("unchecked")
private void ListTe() {
List list = new ArrayList();
List list2 = new LinkedList();
list.add(0, "a");
list.add(0, "b");
list.add(0, "c");
list.add(0, "d");
list.add(0, "e");
list2.add(0, "a2");
list2.add(0, "b2");
list2.add(0, "c2");
list2.add(0, "d2");
list2.add(0, "e2");
Iterator it = list.iterator();
Iterator it2 = list2.iterator();
while (it.hasNext()) {
for (int i = 0; i < list.size(); i++) {
System.out.println("im it " + i + it.next());
}
}
while (it2.hasNext()) {
for (int i = 0; i < list2.size(); i++) {
System.out.println("im it2 " + i + it2.next());
}
}
}
/**
* map
*
* @author Administrator
* @see:map
*/
@SuppressWarnings("unchecked")
private void SetTe() {
Set set = new HashSet();
set.add("a3");
set.add("b3");
set.add("c3");
set.add("d3");
set.add("e3");
Iterator it = set.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
}
/**
* Map
*
* @author Administrator
*/
private void MapTe() {
Map<Integer, HashMapTest> map = new HashMap<Integer, HashMapTest>();
map.put(0, new HashMapTest(1, "davint", 1));
map.put(1, new HashMapTest(2, "ddavint", 2));
map.put(2, new HashMapTest(3, "vint", 3));
map.put(3, new HashMapTest(4, "davin\\t", 4));
Set keys = map.keySet();
Iterator it = keys.iterator();
while (it.hasNext()) {
Integer key = (Integer) it.next();
HashMapTest hs = map.get(key);
System.out.println(hs.getName() + "###" + hs.getNum());
}
}
/**
* result
*
* @author Administrator result
*/
// im it 0e
// im it 1d
// im it 2c
// im it 3b
// im it 4a
// im it2 0e2
// im it2 1d2
// im it2 2c2
// im it2 3b2
// im it2 4a2
// e3
// d3
// b3
// a3
// c3
// davint###1
// ddavint###2
// vint###3
// davin\t###4
/**
* @author Administrator
* @see do everything
*/
public static void main(String[] args) {
// String a = "A";
// String b = "B";
// String c = "C";
// String d = "D";
// List<String> list = new ArrayList<String>();
//
// list.add(a);
// list.add(b);
// list.add(c);
// list.add(d);
// list.set(0, b);//
// list.add(1,d);
// Iterator<String> it = list.iterator();
// while (it.hasNext()) {
//
// System.out.println(it.next() + "<-->");
//
// }
// list=list.subList(1, 2);
// for (int i=0;i<list.size();i++){
// System.out.println("suoyin"+i+":"+list.get(i));//利用get(int
// index)方法获得指定索引位置的对象
//
// }
HashMapTest hs = new HashMapTest();
hs.ListTe();
hs.SetTe();
hs.MapTe();
}
}