当前位置: 首页 > 编程笔记 >

JAVA集合框架工具类自定义Collections集合方法

华宇
2023-03-14
本文向大家介绍JAVA集合框架工具类自定义Collections集合方法,包括了JAVA集合框架工具类自定义Collections集合方法的使用技巧和注意事项,需要的朋友参考一下

项目中有需要多次统计 某些集合中 的某个属性值,所以考虑封装一个方法,让其其定义实现计算方式。 话不多说,看代码:

1、封装的自定义集合工具类:CollectionsCustom

package com.test.util;
import java.util.Collection;
import org.apache.commons.collections.CollectionUtils;
/**
 * 自定义集合处理类
 */
public class CollectionsCustom { 
  /**
   * 将传入的collection内对象进行计算后得出结果
   * @param original    计算前collection
   * @param reduceFunction 计算方式
   * @param initValue   计算结果初始值
   * @param <Input>    collection对象类型
   * @param <Output>    结果类型
   * @return
   */
  public static <Input, Output> Output reduce(Collection<Input> original, Output initValue, ReduceFunction<Input, Output> reduceFunction) {
    Output result = initValue;
    if (CollectionUtils.isEmpty(original)) {
      return result;
    }
    if (reduceFunction == null) {
      return result;
    }
    for (Input input : original) {
      result = reduceFunction.apply(input, result);
    }
    return result;
  }
  /**
   * 自定义计算接口
   * @param <Input>
   * @param <Result>
   */
  public interface ReduceFunction<Input, Result> {
    Result apply(Input input, Result lastResult);
  }
}

2、测试类TestCollections

package com.test;
import java.math.BigDecimal;
import java.util.Arrays;
import java.util.List;
import com.test.util.CollectionsCustom;
public class TestCollection {
 private static List<User> list = Arrays.asList(
  new User("张三", BigDecimal.valueOf(35.6), 18),
  new User("李四", BigDecimal.valueOf(85), 30),
  new User("赵六", BigDecimal.valueOf(66.55), 25));
 public static void main(String[] args) {
 //统计集合内分数之和
 testTotalScore();
 //统计集合内年龄之和
 testTotalAge();
 }
 private static void testTotalScore(){
 //统计集合内分数之和
 BigDecimal totalScore = CollectionsCustom.reduce(list, BigDecimal.ZERO, new CollectionsCustom.ReduceFunction<User, BigDecimal>() {
  @Override
  public BigDecimal apply(User input, BigDecimal lastResult) {
  // TODO Auto-generated method stub
  return lastResult.add(input.getScore());
  }
 });
 System.out.println("总共分数:" + totalScore);
 }
 private static void testTotalAge(){
 //统计集合内年龄之和
 Integer totalAge = CollectionsCustom.reduce(list, 0, new CollectionsCustom.ReduceFunction<User, Integer>() {
  @Override
  public Integer apply(User input, Integer lastResult) {
  // TODO Auto-generated method stub
  return lastResult += input.getAge();
  }
 });
 System.out.println("总共年龄:" + totalAge);
 }
 static class User{
 private String userName; //姓名
 private BigDecimal score;//分数
 private Integer age;
 public String getUserName() {
  return userName;
 }
 public void setUserName(String userName) {
  this.userName = userName;
 }
 public BigDecimal getScore() {
  return score;
 }
 public void setScore(BigDecimal score) {
  this.score = score;
 }
 public Integer getAge() {
  return age;
 }
 public void setAge(Integer age) {
  this.age = age;
 }
 public User(String userName, BigDecimal score, Integer age) {
  super();
  this.userName = userName;
  this.score = score;
  this.age = age;
 }
 public User() {
  // TODO Auto-generated constructor stub
 }
 }
}

3、测试输出结果:

总共分数:187.15
总共年龄:73

这里如果传入的是封装类型Integer等,最好自己做下非空处理。相信高质量的封装代码能为你自己加分的!

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对小牛知识库的支持。如果你想了解更多相关内容请查看下面相关链接

 类似资料:
  • 1. Collections工具类 Collections类概述 针对集合操作 的工具类,里面的方法都是静态的,可以对集合进行排序、二分查找、反转、混排等。 Collection和Collections的区别 Collection:是单列集合的顶层接口,有子接口List和Set。Collections:是针对集合操作的工具类,有对集合进行排序和二分查找等方法 Collections常用方法 pub

  • 就像C++的stl一样,Rust提供了一系列的基础且通用的容器类型。善用这些集合类型,可以让Rust编程更加方便轻松,但每种数据结构都会有其局限性,合理的选型方能维持更好的效率。 本章目录: 动态数组 Vec 哈希表 HashMap

  • 并非所有的都会是文章或页面。也许您想要记录您开源项目中涉及的各种解决方案,团队成员,或是某次会议记录。集合(Collection)允许您定义一种新的文档类型,它既可以像页面和文章那样工作,也可以拥有它们特有的属性和命名空间。 使用集合 第一步:让 Jekyll 读取您的集合 将下面的代码加入您的 _config.yml 文件,将 my_collection 替换为您集合的名字。 collectio

  • 尽量用 map 而不是 collect。 尽量用 detect 而不是 find。 find 容易和 ActiveRecord 的 find 搞混 - detect 则是明确的说明了 是要操作 Ruby 的集合, 而不是 ActiveRecord 对象。 尽量用 reduce 而不是 inject。 尽量用 size, 而不是 length 或者 count, 出于性能理由。 尽量用数组和 has

  • 一、Java集合类简介: Java集合大致可以分为Set、List、Queue和Map四种体系。 其中Set代表无序、不可重复的集合;List代表有序、重复的集合;而Map则代表具有映射关系的集合。Java 5 又增加了Queue体系集合,代表一种队列集合实现。 Java集合就像一种容器,可以把多个对象(实际上是对象的引用,但习惯上都称对象)“丢进”该容器中。从Java 5 增加了泛型以后,Jav

  • 这篇文章总结了所有的Java集合(Collection)。主要介绍各个集合的特性和用途,以及在不同的集合类型之间转换的方式。 1. Arrays Array是Java特有的数组。在你知道所要处理数据元素个数的情况下非常好用。java.util.Arrays 包含了许多处理数据的实用方法: 方法声明 功能描述 Arrays.asList() 可以从 Array 转换成 List。可以作为其他集合类型