java集合学习之Collection(1)
java集合类主要由两个接口派生出来:Collection和Map,者两个类是java集合框架的根本接口,其余的集合都是这两个集合的子类,这篇博客主要讲Collection接口及其体系中包含的set,list,queue 等集合。下面依次就这些内容进行讲解。
一.Collection
1.Collection是set,list,queue接口的父接口,Collection中定义的方法对set,list,queue也是适用的。下面的代码示范了Collection的基本操作,从下面的代码中可以看到,集合的操作有针对当个元素和一个集合的,这两种操作的函数名很是类似,只是对于操作对象是集合的,函数名一般加一个All。
package lkl;
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();
Collection d= new HashSet();
///add()方法可以向集合中添加一个元素
///addAll()方法可以添加一个集合
c.add("lkl");
d.add("test");
d.add("java");
c.addAll(d);
///isEmpty()方法用来测试集合是否为空
System.out.println("集合是否为空?"+c.isEmpty());
///remove()可以将一个元素从集合中移除
/// removeAll可以将某个集合的全部元素从当前集合移除
c.remove("lkl");
c.remove(d);
System.out.println("集合是否为空?"+c.isEmpty());
c.add("lkl");
c.add(d);
///contains()方法可以用来判断集合是否包含某个元素
///containsAll可以用来判断集合是否包含另一个集合中所有的元素
System.out.println("集合c是否包含“lkl”?"+c.contains("lkl"));
System.out.println("集合c是否d中的所有元素?"+c.containsAll(d));
///retainAll()方法求当前集合和传入集合的交集
c.retainAll(d);
System.out.println(c);
c.add("lkl");
///size()方法返回集合中元素的个数
System.out.println("集合c中的元素个数为:"+c.size());
/* ///toArray将集合转换成一个数组,集合元素成为数组元素
String[] str =(String[])c.toArray();*/
///clear()将集合清空
c.clear();
System.out.println("集合是否为空?"+c.isEmpty());
}
}
2.Collection集合的遍历
我们一般使用Iterator来遍历集合。Iterator也是java集合框架的成员,其主要用于遍历Collection集合;它提供了以下三个方法:
bool hasNext():如果集合的元素还没被遍历玩,则返回true
Object next(): 返回集合中的下一个元素
void remove(): 删除集合里上次next()方法返回的元素
有三个需要注意的地方:
1.从集合中返回的元素是Object类型的,所以我们需要手动进行类型转换。
2.每次返回的是集合中元素的值而不是元素本身,所以我们不能通过改变返回的值而改变集合中元素本身。
3.我们不能在迭代访问时改变集合中元素(但可以调用Iterator的remove方法),否则会引发异常。
下面的代码示范了如何通过迭代器遍历集合中元素:
package lkl;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
public class IteratorTest {
public static void main(String[] args){
Collection c =new HashSet();
c.add("java");
c.add("c");
c.add("c++");
c.add("shell");
///声明一个Collection的迭代器
Iterator it = c.iterator();
while(it.hasNext()){
///从集合中取出的元素都是Object类型的,需要进行类型转换
String str = (String) it.next();
if(str=="shell"){
///我们可以通过调用iterator的remove方法来删除
///上次迭代返回的元素,但是不能通过别的方法来改变集合中的元素
it.remove();
///下面这句代码会引发异常
///c.add("python");
}
str="lkl"; ///我们不能通过改变迭代器的返回值而改变集合中的元素
}
System.out.println(c);
}
}
java5后还可以通过foreach循环来迭代访问集合中的元素(就和访问数组中元素一样),使用foreach方法访问时注意事项同上面的Iterator方法,下面的代码示范了这种方法:
package lkl;
import java.util.ArrayList;
import java.util.Collection;
public class ForeachTest {
public static void main(String[] args){
Collection c =new ArrayList();
c.add("java");
c.add("c");
c.add("c++");
c.add("shell");
for(Object cc : c){
String str = (String) cc;
System.out.println(str);
}
}
}
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。