当前位置: 首页 > article >正文

Java对集合的操作方法

1. 数组转集合

//数组转集合
String[] split = quickRechargeAmount.split(",");
List<String> stringList = Stream.of(split).collect(Collectors.toList());

2. 对List集合数据内容进行分组

//对List集合数据内容进行分组
Map<String, List<LiveAppGiftResponse>> collectList = giftResponseList.stream().collect(Collectors.groupingBy(LiveAppGiftResponse::getGiftTypeName));

3. 匹配两个集合内相等的元素,生成新的集合

//匹配两个集合内相等的元素,生成新的集合
private List<AppLiveUserRankResponse> getUserRankInfo(List<LiveUserRankCache> dayRankCacheList, Integer anchorId) {
    List<AppLiveUserInfoResponse> userRewardList = appLiveRewardMapper.getUserRewardList(CommonContext.get().getSiteId(), anchorId);
    if (CollectionTool.isNotEmpty(dayRankCacheList) && CollectionTool.isNotEmpty(userRewardList)) {
        //组装用户与排行榜信息
        List<AppLiveUserRankResponse> userRankList = dayRankCacheList.stream().map(dayRankCache -> userRewardList.stream()
                .filter(userReward -> Objects.equals(userReward.getUserId(), dayRankCache.getUserId()))
                .findFirst().map(m -> {
                    AppLiveUserRankResponse appLiveUserRank = new AppLiveUserRankResponse();
                    appLiveUserRank.setRank(dayRankCache.getRank());
                    appLiveUserRank.setScore(dayRankCache.getScore());
                    appLiveUserRank.setAvatarUrl(m.getAvatarUrl());
                    appLiveUserRank.setNickName(m.getNickName());
                    return appLiveUserRank;
                }).orElse(null)).filter(Objects::nonNull).collect(Collectors.toList());
        return userRankList;
    }
    return null;
}

4. 根据A集合某元素去对比B集合某元素,生成过滤后的B集合

//根据A集合某元素去对比B集合某元素,生成过滤后的B集合
public List<User> selectUnassignedGameList(List<User> userBList) {
    // 查询所有用户信息
    List<User> userAList = this.list();
    // 获取userBList的中所有用户信息并对比后排除userAList已存在用户信息
    List<User> list = userBList.stream().filter(b -> !userAList.stream().map(a
				-> a.getUId()).collect(Collectors.toList()).contains(b.getUId())).collect(Collectors.toList());
		return list;
	}

5. 集合内某一元素比对特定条件进行排序

        //查询当前账户币种信息集合
        List<LiveCustomerWallet> customerWalletList = customerWalletMapper.search(Criteria.add(LiveCustomerWallet.PROP_CUSTOMER_ID, Operator.EQ, model.getUserId()), Order.asc(LiveCustomerWallet.PROP_CURRENCY));
        if (CollectionTool.isNotEmpty(customerWalletList)){
            //先按指定币种排序,然后再主货币排序,再按币种排序
            String mainCurrency = BaseCacheTool.getSysSite(model.getSiteId()).getMainCurrency();
            if (!mainCurrency.equals(model.getCurrency())){
                customerWalletList.sort((o1, o2) -> {
                    int i = o1.getCurrency().equals(mainCurrency) ? 0 : 1;
                    int i2 = o2.getCurrency().equals(mainCurrency) ? 0 : 1;
                    return i - i2;
                });
            }
            customerWalletList.sort((o1, o2) -> {
                int i = o1.getCurrency().equals(model.getCurrency()) ? 0 : 1;
                int i2 = o2.getCurrency().equals(model.getCurrency()) ? 0 : 1;
                return i - i2;
            });
        }

6. 集合去重

//使用java steam进行去重
List<Integer> list = numbersList.stream().distinct().collect(Collectors.toList());

//将重复的列表添加到 LinkedHashSet,然后将内容返回到列表中
LinkedHashSet<Integer> hashSet = new LinkedHashSet<>(numbersList);

7. 对集合进行分页并模糊查询

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;

public class ListTest {
    public static void main(String[] args) {
        List<User> list = new ArrayList<>();
        list.add(new User("zhangsan", 18));
        list.add(new User("lisi", 19));
        list.add(new User("wangwu", 20));
        list.add(new User("zhaoliu", 21));
        String searchName = "h";
        // 是否全部匹配,还是 局部包含匹配
        Boolean globalMatch = Boolean.FALSE;
        //获取当前页
        int pageNumber = 1;
        //一页返回多少条
        int pageSize = 2;
        List<User> stringList = list.stream().filter(l -> globalMatch?l.getName().equals(searchName):
                l.getName().contains(searchName))
                //根据年龄升序排序
                .sorted(Comparator.comparing(User::getAge))
                .collect(Collectors.toList());
        //一页 返回二条
        List<User> pageList = stringList.stream().skip((pageNumber-1)*pageSize).limit(pageSize).collect(Collectors.toList());
        System.out.println("返回总条数:"+stringList.size()+"当前页为:"+pageNumber+"每页显示条数:"+pageSize);
        System.out.println("本次返回的数据为:");
        pageList.forEach(System.out::println);
    }
}
class User{
    private String name;
    private Integer age;

    public User(String name, Integer age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

http://www.kler.cn/a/442016.html

相关文章:

  • ARM架构中如何判断stage 1 on/off
  • 信息奥赛一本通 1168:大整数加法
  • Java测试开发平台搭建(九)前端
  • 深度学习 Pytorch 基本优化思想与最小二乘法
  • 天机学堂5-XxlJobRedis
  • ASP .NET Core 学习(.NET9)配置接口访问路由
  • 面试小札:闪电五连鞭_7
  • opencv # Sobel算子、Laplacian算子、Canny边缘检测、findContours、drawContours绘制轮廓、外接矩形
  • Sentry日志管理thinkphp8 tp8 sentry9 sentry8 php8.x配置步骤, tp8自定义异常处理类使用方法
  • NSDT 3DConvert:高效实现大模型文件在线预览与转换
  • 关于llama2:从原始llama-2-7b到llama-2-7b-hf的权重转换教程
  • cesium 与 threejs 对比
  • attack xv6
  • Pytorch | 从零构建ResNet对CIFAR10进行分类
  • RabbitMQ:添加virtualHost
  • 005 QT常用控件Qwidget_上
  • 随手记:小程序兼容后台的wangEditor富文本配置链接
  • VMware ubuntu16.04怎么设置静态IP联网
  • openharmony bootanimation分析及常见错误
  • 如何在 Debian 上安装 Dovecot(POP / IMAP)?
  • TCP客户端模拟链接websocket服务端
  • 基于ubuntu的mysql 8.0安装教程
  • 中国当代篆刻孙溟㠭作品《美》
  • 科研绘图系列:R语言绘制韦恩图(Venn plot)
  • WebGPU、WebGL 和 OpenGL/Vulkan对比分析
  • 生信学习入门常见错误可能的原因分类总结和求助指南