集合类的使用

集合类就是一个可以放任何东西的数组,可以这么理解!

集合类中有许多种集合。

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:

使用的是链表的特性,单独的节点会保留前一个节点和后一个节点的引用。而且有关于链表的方法。

voidaddFirst(E e)
将指定元素插入此列表的开头。
voidaddLast(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(详细)





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值