>>分享孙卫琴的Java技术专稿和著作 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 24628 个阅读者 刷新本主题
 * 贴子主题:  【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开发-->Servlet技术详解(Ⅱ)
  JSP与Hibernate开发-->映射组成关系
  Java网络编程-->用Axis发布Web服务
  精通Spring-->计算属性和数据监听
  Vue3开发-->Vue简介
  【Vue.js技术专题】路由管理器的基本用法
  【Spring Cloud Alibaba专题】ShardingSphere核心概念
  【Spring专题】通过JPA API实现Repository接口
  【Spring专题】@Query和@Modifying注解的增删改操作
  探讨IT技术作者的素养
  从《精通Spring》和《精通Vue.js》的写作分享学习新技术的经...
  【Vue专题】Vue组件的CSS过渡模式
  【持久化专题】用orphanRemoval属性映射父子关系
  【持久化专题】Hibernate的配置文件
  【Java网络编程专题】用java.net.URL类访问HTTP服务器读取网...
  【持久化专题】通过JPQL查询语句进行批量处理数据
  【JavaWeb专题】Spring MVC创建Web应用范例,轻松入门
  【JavaWeb专题】Tomcat与IIS集成详解
  【Java基础编程专题】Java集合与数组的互换
  【Java基础编程专题】Java基本类型和引用类型的三个区别
  更多...
 IPIP: 已设置保密
楼主      
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


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