首页 > 代码库 > 集合概述

集合概述

/*

学习这东西就是要坚持,前方一定是光明的,千万不能着急

*/

java 集合


java集合类是工具类的一种,是一个容器,用于存储数量不能的多个对象(只能保存对象,实际上是对象的引用),并实现常用的数据结构。

还可以保存具有映射关系的关联数组。


分为set(无序,不可重复)、list(有序,可重复)、map(具有映射关系)、queue(队列集合)四种体系。


java所有的集合类都保存在java.util包下,主要由Collection和Map两个跟接口派生而出。






Collection接口和Iterator接口

Collection接口派生出:Set、List、Queue;定义了如下操作集合的方法;

//boolean add(object o);用于向集合中添加一个元素,成功返回true
//boolean addAll(Collection c)把集合c中的所有元素添加到指定集合中
//int size()确定集合中元素的个数
//Boolean contains(object o)检测集合中是否包含传入的
//boolean containsAll(Collecton c)检测集合中是否包含给定集合c中的所有元素
//boolean isEmpty()如果集合为空返回true,否则FALSE
//void clear()清楚集合所有元素,集合长度归零
//boolean remove(object o)删除集合中指定的元素(可以是一个也可以是多个)
//boolean removeAll(Collection c)删除集合中给定集合c的所有元素
//boolean retainAll(Collection c)删除集合c里不包含的元素,即取得和集合c的交集
//object toArray()把集合转化成对应数组
//iterator iterator()返回一个iterator对象,用于遍历集合中的元素
import java.util.*;
public class testCollection {
public static void main(String[] args){
Collection c=new ArrayList();
c.add("Math");
c.add(1990);
System.out.println("集合中元素的个数为:"+c.size());
c.remove(1990);
System.out.println("集合中元素的个数为:"+c.size());
c.add("History");
System.out.println(c);//输出  [Math, History]
Collection books=new HashSet();
books.add("History");
books.add("Math");
System.out.println("c集合中是否完全包含books集合:"+c.containsAll(books));
c.remove("Math");
System.out.println("c集合中是否完全包含books集合:"+c.containsAll(books));
books.retainAll(c);
System.out.println("books里的集合元素"+books);
c.removeAll(books);
System.out.println("c里的集合元素"+c);
books.clear();
}
}


以上是Collection接口实现的ArrayList和HashSet集合,当使用System.out.println()时的输出格式是[ele1,ele2,ele3]形式,显然Collection接口重写了toString()方法;




使用iterator接口遍历集合(迭代访问),如下三个方法:

//boolean hasNext()如果有下一个就返回true
//Object next()返回集合的下一个元素
//void remove()删除集合里上一次next方法返回的元素
import java.util.*;
public class testIterator {
public static void main(String[] args){
Collection books=new HashSet();
books.add("History");
books.add("Math");
books.add("English");
Iterator it=books.iterator();
while(it.hasNext()){
String book=(String)it.next();
System.out.println(book);
if(book.equals("English")){
it.remove();
}
}
System.out.println(books);
}
}


Iterator并不是把集合中的元素传递给迭代变量,而是把集合中元素的值传递,所以通过Iterator对集合元素的值进行修改不起作用。


在使用Iterator来迭代Collection集合过程中,不能修改集合元素的值,否则会抛出异常(多线程中容易出这种错误)





另外也可以使用foreach语法遍历集合,同样在遍历过程中也不能修改集合元素

import java.util.*;
public class testIterator {
public static void main(String[] args){
Collection books=new HashSet();
books.add("History");
books.add("Math");
books.add("English");
for(Object obj : books){
String book=(String)obj;
System.out.println(book);
}
System.out.println(books);
}
}

集合概述