您的位置:首页 > 编程语言 > Java开发

集合类的使用

2015-08-03 09:59 513 查看
集合类就是一个可以放任何东西的数组,可以这么理解!

集合类中有许多种集合。

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(详细)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java