2021-05-24【原创】对列表中过长的部分进行合并累计展示

一、需求描述

在为百分比饼图提供数据时,遇到一个问题:对于数据列表中过多的部分进行合并。

例如:

数据列表:

"氢气", "10%"
"氧气", "15%"
"氦气", "13%"
"一氧化碳", "7%"
"二氧化碳", "5%"
"颗粒物", "9%"
"一氧化硫", "11%"
"二氧化硫", "8%"
"氨气", "3%"
"氯气", "19%"

想要分为6个部分展示,把剩余的合并成一个   “其他”,“50%”  这样,即:

"氢气", "10%"
"氧气", "15%"
"氦气", "13%"
"一氧化碳", "7%"
"二氧化碳", "5%"
“其他”,“50%” 

 

二、代码实现(没错,别废话,先看东西——怀念老罗的相声新品发布会,虽然我不是锤粉,哈哈)

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.ArrayList;
import java.util.List;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class TestUpList {

    private String item;
    private String Num;

    public static List<TestUpList> upList(List<TestUpList> inList, Integer num) {
        List<TestUpList> resultList = new ArrayList<>();
        int sum = 0;
        for (int i = 0; i < inList.size(); i++) {
            if (i < num - 1) {
                resultList.add(inList.get(i));
            } else {
                sum += Integer.parseInt(inList.get(i).getNum().replace("%", ""));
            }
        }
        TestUpList tmp = new TestUpList();
        tmp.setItem("其它");
        tmp.setNum(sum + "%");
        resultList.add(tmp);
        return resultList;
    }

    public static void main(String[] args) {

        int num = 6;
        List<TestUpList> testUpLists = new ArrayList<>();
        testUpLists.add(new TestUpList("氢气", "10%"));
        testUpLists.add(new TestUpList("氧气", "15%"));
        testUpLists.add(new TestUpList("氦气", "13%"));
        testUpLists.add(new TestUpList("一氧化碳", "7%"));
        testUpLists.add(new TestUpList("二氧化碳", "5%"));
        testUpLists.add(new TestUpList("颗粒物", "9%"));
        testUpLists.add(new TestUpList("一氧化硫", "11%"));
        testUpLists.add(new TestUpList("二氧化硫", "8%"));
        testUpLists.add(new TestUpList("氨气", "3%"));
        testUpLists.add(new TestUpList("氯气", "19%"));

        System.out.println("处理前:");
        testUpLists.forEach(System.out::println);
        System.out.println("---------------------------");
        System.out.println("处理后:");
        upList(testUpLists, num).forEach(System.out::println);

    }

}

原理很简单:

通过遍历构造个新的list,把大于展示数后面的部分累加后,添加到新list的最后。

绝对原创,有bug在所难免,欢迎来杠~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值