|
本文参考:
《Java面向对象编程》,作者:孙卫琴
《漫画Java编程》,作者:孙卫琴,杜聚宾
前面介绍的范例在遍历集合时,每次都仅仅处理一个元素。如果需要一次处理大批量数据,可以调用集合的支持批量操作的方法。在Collection接口中定义了以下方法:
(1)boolean retainAll(Collection<?> c)
修改当前集合,在当前集合中保留那些同时位于参数c集合中的元素,删除其余的元素。如果当前集合最终做了改动,就返回true。
(2)boolean removeAll(Collection<?> c)
删除当前集合中的那些同时位于参数c集合中的元素。
(3)boolean addAll(Collection<? extends E> c)
把参数c集合中的元素加入到当前集合中。
(4)boolean containsAll(Collection<?> c)
判断当前集合中是否存在参数c集合中的元素。
此外,在List接口中还有一个用于获得子列表视图的方法:
List<E> subList(int fromIndex,int toIndex)
以上方法中的fromIndex参数和toIndex参数分别指定元素的起始索引和结束索引。起始索引对应的元素会加入到子列表中,而结束索引对应的元素不会加入到子列表中。例如list.subList(0,7)将把当前列表中索引从0到6的元素加入到子列表中。
以下例程的BulkTester类演示了对集合的种种批量操作。
/* 例程 BulkTester.java */
import java.util.*;
public class BulkTester {
final static Integer[] DATA1={11,22,33,44,55,66};
final static Integer[] DATA2={11,22,77,88};
static Set<Integer> getOriginalSet(Integer[] data){
Set<Integer> set=new HashSet<Integer>(Arrays.asList(data));
return set;
}
static void print(Collection<Integer> col){
for(Integer i:col)
System.out.print(i+" ");
}
public static void main(String[] args) {
Set<Integer> set1=getOriginalSet(DATA1);
Set<Integer> set2=getOriginalSet(DATA2);
set1.retainAll(set2);
System.out.println("打印两个集合的交集");
print(set1);
set1=getOriginalSet(DATA1);
set2=getOriginalSet(DATA2);
set1.removeAll(set2); //批量删除元素
System.out.println("\n打印删除SET2中元素后的SET1集合");
print(set1);
set1=getOriginalSet(DATA1);
set2=getOriginalSet(DATA2);
set1.addAll(set2); //批量添加元素
System.out.println("\n打印加入SET2中元素后的SET1集合");
print(set1);
List<Integer> list1=new ArrayList<Integer>(Arrays.asList(DATA1));
List<Integer> list2=list1.subList(0,3); //获取索引从0到2的子列表
list2.clear(); //删除子列表视图
System.out.println("\n打印删除子列表视图后的LIST1列表");
print(list1);
}
} |
在以上程序中,通过list2.clear()方法删除子列表视图时,原始的list1列表中的相应元素会被删除。运行以上程序,打印结果如下:
打印两个集合的交集
22 11
打印删除SET2中元素后的SET1集合
33 66 55 44
打印加入SET2中元素后的SET1集合
33 66 22 55 88 11 44 77
打印删除子列表后的LIST1列表
44 55 66
程序猿的技术大观园:www.javathinker.net
[这个贴子最后由 admin 在 2022-03-15 14:42:26 重新编辑]
|
|