集合类就是一个可以放任何东西的数组,可以这么理解!
集合类中有许多种集合。
ArrayList:
通过Add方法
public static void main(String[] args) {
// TODO Auto-generated method stub
ArrayList ar = new ArrayList();
//添加到集合中可以重复
ar.add(new man("1"));
ar.add(new man("2"));
ar.add(new man("3"));
ar.add(new man("1"));
//循环读取
for(int i=0;i<ar.size();i++){
System.out.println(((man) ar.get(i)).getName());
}
System.out.println("toArray");
//toArray方法是返回一个数组,所有的东西都在数组里!!
Object[] arr = ar.toArray();
//循环读取
for(int i=1;i<arr.length;i++){
System.out.println(((man) arr[i]).getName());
}
}
public static class man{
private String name;
public man(String name){
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
LinkedList:
使用的是链表的特性,单独的节点会保留前一个节点和后一个节点的引用。而且有关于链表的方法。
void | addFirst(E e) 将指定元素插入此列表的开头。 |
void | addLast(E e) 将指定元素添加到此列表的结尾。 |
LinkedList<Man> lk = new LinkedList<Man>();
lk.add(new Man("1"));
lk.addFirst(new Man("2"));
lk.addLast(new Man("1"));
for(Object item: lk){
System.out.println(((Man) item).getName());
}
LinkedList和ArrayList区别在于遍历以及添加,如果ArrayList添加需要移动后面的元素而LinkedList添加则是使用链表改变引用内存上会比ArrayList好。
如果是在数组的前面或者中间插入用LinkedList好,否则用ArrayList好。
Iterator的使用:
如果集合类中有方法返回Iterator的对象就可以用迭代器遍历
Iterator<Man> it = lk.listIterator();
while(it.hasNext()){
System.out.println(it.next().getName());
}
迭代器的方法不多!!
TreeSet:
这个是可以排序的,但是如果要比较对象,就必须复写他的Comparator!!!!写的是自己比较的内容
要不然对象是不能比较的!!!!
public static class ManCoparator implements Comparator<Man>{
@Override
public int compare(Man o1, Man o2) {
// TODO Auto-generated method stub
return 0;
}
}
HashMap:
使用的是Key——Value,用key来寻找值
HashMap<String,Man> hm = new HashMap();
hm.put("1", new Man(1,"11"));
hm.put("3", new Man(3,"33"));
//Key---Value
System.out.println("Key---Value");
Man m = (Man) hm.get("1");
System.out.println(m.getName());
但是遍历有四种网上可以找。
其一:
for(String Key: hm.keySet()){
System.out.println(Key);
}
treeMap是有序也要复写Comparator!!
其他的在于使用方面
1.线程安全 Vector,HashTable
2.不要求线程安全 ArrayList,LinkedList,HashMap
3.要求键值HashMap,HashTable
4.数据大,线程安全 Vector
记得一点安全就是使用同步但是效率就会低!!!
http://www.360doc.com/content/12/0717/15/7662927_224736595.shtml(详细)