本文主要是Java集合的概述和Set集合
1.Java集合概述
1)数组可以保存多个对象,但数组长度不可变,一旦在初始化数组时指定了数组长度,这个数组长度就是不可变的,如果需要保存数量变化的数据,数组就有点无能为力了;而且数组无法保存
具有映射关系的数据。为了保存数量不确定的数据,以及保存具有映射关系的数据,Java提供了集合类。集合类主要负责保存、盛装其他数据,因此集合类也被称为容器类。
2)Java集合类可用于存储数量不等的多个对象,并可以实现常用的数据结构,如栈、队列等。还可以用于保存具有映射关系的关联数组。Java集合大致可以分为Set、List、Map三种体系,
其中Set代表无序、不可重复的集合;List代表有序、重复的集合;Map则代表具有映射关系的集合。Queue体系集合代表一种队列集合实现。
3)集合类和数组不一样,数组元素既可以是基本类型的值,也可以是对象(实际上保存的是对象的引用变量);而集合类里只能保存对象(实际上保存的是对象的引用变量)。
4)Java集合类主要由两个接口派生出:Collection和Map。Set和List接口是Collection接口派生的两个子接口,他们分别代表了无序集合和有序集合;Queue是Java提供的队列实现。
Map实现类用于保存具有映射关系的数据。Map保存的每项数据都是key-value对,也就是由key和value两个值组成。Map里的key是不可重复的,key用于标识集合里的每项数据,如果需要查阅
Map中的数据时,总是根据Map的key来获取。
5)Collection接口是List、Set和Queue接口的父接口,该接口里定义的方法既可以用于操作Set集合、也可以用于操作List集合和Queue集合。
boolean add(Object o):该方法用于向集合里添加一个元素。
boolean addAll(Collection c):该方法把集合c里的所有元素添加到指定集合里。
void clear():清除集合里的所有元素,将集合长度变为0。
boolean contains(Object o):返回集合里是否包含指定元素。
boolean containsAll(Collection c):返回集合里是否包含集合c里的所有元素。
boolean isEmpty():返回集合是否为空。当集合长度为0时返回true,否则返回false。
Iterator iterator():返回一个Iterator对象,用于遍历集合里的元素。
boolean remove(Object o):删除集合中的指定元素o,当集合中包含了一个或多个元素o时,这些元素将被删除,该方法将返回true。
boolean removeAll(Collection c):将集合中删除集合c里包含的所有元素(相当于用调用该方法的集合减集合c),如果删除了一个或一个以上的元素,则该方法返回true。
boolean retainAll(Collection c):将集合中删除集合c里不包含的元素(相当于把调用该方法的集合变成该集合的集合c的交集),如果该操作改变了调用该方法的集合,则该方法返回true。
int size():该方法返回集合里元素的个数。
Object[] toArray():该方法把集合转换成一个数组,所有的集合元素变成对应的数组元素。
eg:
package cn.it.lsl;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
public class CollectionTest {
public static void main(String[] args) {
Collection c = new ArrayList();
c.add("小明");
c.add(6);
System.out.println("c集合的元素个数为:"+c.size());
c.remove(6);
System.out.println("c集合的元素个数为:"+c.size());
System.out.println("c集合是否包含\"小明\"字符串:"+c.contains("小明"));
c.add("JavaEE");
System.out.println("c集合的元素:"+c);
Collection books = new HashSet();
books.add("JavaEE");
books.add("Android");
System.out.println("c集合是否完全包含books集合?"+c.containsAll(books));
c.removeAll(books);
System.out.println("c集合的元素:"+c);
c.clear();
System.out.println("c集合的元素:"+c);
//books集合里只剩下c集合里也包含的元素
books.retainAll(c);
System.out.println("books集合的元素:"+books);
}
}
6)Iterator接口遍历集合元素
Iterator接口也是Java集合框架的成员,主要用于遍历Collection集合中的元素,Iterator对象也被称为迭代器。
Iterator接口里定义了如下三个方法:
boolean hasNext():如果被迭代的集合元素还没有被遍历,则返回true。
Object next():返回集合里的下一个元素。
void remove():删除集合里上一次next方法返回的元素。
eg:
package cn.it.lsl;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
public class IteratorTest {
public static void main(String[] args) {
Collection books = new HashSet();
books.add("Java ee");
books.add("Java");
books.add("Andrroid");
//获取books集合对应的迭代器
Iterator it = books.iterator();
while(it.hasNext()){
//it.next()方法返回的数据类型是Object类型
String book = (String)it.next();
System.out.println(book);
if(book.equals("Java")){
it.remove();
}
book = "测试字符串";
}
System.out.println(books);
}
}
如果要创建Iterator对象,则必须有一个被迭代的集合。
package cn.it.lsl;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
public class IteratorTest {
public static void main(String[] args) {
Collection books = new HashSet();
books.add("Java ee");
books.add("Java");
books.add("Android");
//获取books集合对应的迭代器
Iterator it = books.iterator();
while(it.hasNext()){
//it.next()方法返回的数据类型是Object类型
String book = (String)it.next();
System.out.println(book);
if(book.equals("Android")){
//it.remove();