>>分享孙卫琴的Java技术专稿和著作 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 24569 个阅读者 刷新本主题
 * 贴子主题:  【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 重新编辑]
  Java面向对象编程-->流程控制
  JavaWeb开发-->使用Session(Ⅰ)
  JSP与Hibernate开发-->Java应用分层架构及软件模型
  Java网络编程-->XML数据处理
  精通Spring-->Vue组件开发高级技术
  Vue3开发-->通过Axios访问服务器
  【Vue.js技术专题】命名路由
  【Spring Cloud Alibaba专题】按照集群模式搭建Redis集群
  【Spring Cloud Alibaba专题】Dubbo框架中提供者回调消费者
  【Spring Cloud Alibaba专题】OpenFeign开启对请求和响应数据...
  【Spring专题】Spring MVC是否过时?
  视频:我的Java课堂总动员,带领小白们走马观花看Java江湖
  【持久化专题】映射一对多双向关联关系
  【持久化专题】用@Formula注解映射派生属性
  【持久化专题】Hibernate的配置文件
  【持久化专题】比较JPA的EntityManager接口与Hibernate的Ses...
  【JavaWeb专题】在Servlet中利用Apache开源类库实现文件上传
  【JavaWeb专题】Spring MVC创建Web应用范例,轻松入门
  《大话Java程序设计从入门到精通》写作花絮
  【JavaWeb专题】选择32位或64位JDK或者Apache HTTP服务器的安...
  【Java基础编程专题】用static修饰符进行静态导入的作用和语...
  更多...
 IPIP: 已设置保密
楼主      
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


中文版权所有: JavaThinker技术网站 Copyright 2016-2026 沪ICP备16029593号-2
荟萃Java程序员智慧的结晶,分享交流Java前沿技术。  联系我们
如有技术文章涉及侵权,请与本站管理员联系。