>>分享孙卫琴的Java技术专稿和著作 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 24582 个阅读者 刷新本主题
 * 贴子主题:  【Java基础编程专题】Java集合的批量操作 回复文章 点赞(0)  收藏  
作者:sunweiqin    发表时间:2017-08-09 07:27:03     消息  查看  搜索  好友  邮件  复制  引用

本文参考:
《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 重新编辑]
网站系统异常


系统异常信息
Request URL: http://www.javathinker.net/WEB-INF/lybbs/jsp/topic.jsp?postID=323&pages=4

java.lang.NullPointerException

如果你不知道错误发生的原因,请把上面完整的信息提交给本站管理人员