关于JAVA将List<T>中的某一key改变其value的工具类

这篇博客介绍了如何在Java中创建一个工具类,用于在List<T>中便捷地更改特定key对应的value,以处理如将浮点值转换为具体数值的需求,适用于前后端数据交互的场景。
摘要由CSDN通过智能技术生成

        在某些情况下,我们需要将数据库中的浮点值改变为具体数值发往前端这就需要改变List中的属性值,解决方法如下:

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

public class ListABswapUtil {

    //将list中的某一属性进行交换
    //list传入list, key传入需要替换的key, value传入需要替换的value
    public static List chattribute(List list, String key, String value){
        List list_f = new ArrayList();
        for(int i=0;i<=list.size()-1; i++){
            int b_d;//替换元素在结尾情况
            String temp_c;//被替换的元素
            String temp_a = list.get(i).toString();//得到单个总字符串
            int b_a = temp_a.indexOf(key)+key.length()+1;//b_a是总字符串到更改值下标的距离
            String temp_b = temp_a.substring(b_a,temp_a.length());//后半段
            int b_b = temp_b.indexOf(",");
            if (b_b==-1){
                b_d = temp_b.indexOf(")");
                temp_c = temp_b.substring(b_d);
            }else {
                temp_c = temp_
可以使用Java 8提供的Stream API来实现这个功能,具体代码如下: ```java import java.util.*; public class MapDiffUtil { /** * 找到两个list不同的keyvalue * @param mapList1 第一个map列表 * @param mapList2 第二个map列表 * @return 返回不同的key-value对 */ public static Set<Map.Entry<String, Object>> diff(List<Map<String, Object>> mapList1, List<Map<String, Object>> mapList2) { // 将两个列表转换为一个Map,key为mapkeyvalue为map对应的value列表 Map<String, List<Object>> map1 = convertToMap(mapList1); Map<String, List<Object>> map2 = convertToMap(mapList2); // 找到key相同但是value不同的key-value对 Set<Map.Entry<String, Object>> result = new HashSet<>(); for (Map.Entry<String, List<Object>> entry : map1.entrySet()) { String key = entry.getKey(); List<Object> values1 = entry.getValue(); List<Object> values2 = map2.getOrDefault(key, Collections.emptyList()); for (int i = 0; i < values1.size() && i < values2.size(); i++) { if (!Objects.equals(values1.get(i), values2.get(i))) { result.add(new AbstractMap.SimpleEntry<>(key, values1.get(i))); } } } return result; } /** * 将Map列表转换为一个Map,key为mapkeyvalue为map对应的value列表 * @param mapList map列表 * @return 转换后的Map */ private static Map<String, List<Object>> convertToMap(List<Map<String, Object>> mapList) { Map<String, List<Object>> result = new HashMap<>(); for (Map<String, Object> map : mapList) { for (Map.Entry<String, Object> entry : map.entrySet()) { result.computeIfAbsent(entry.getKey(), k -> new ArrayList<>()).add(entry.getValue()); } } return result; } } ``` 使用示例: ```java public static void main(String[] args) { List<Map<String, Object>> mapList1 = new ArrayList<>(); mapList1.add(Map.of("name", "Alice", "age", 20)); mapList1.add(Map.of("name", "Bob", "age", 30)); List<Map<String, Object>> mapList2 = new ArrayList<>(); mapList2.add(Map.of("name", "Alice", "age", 21)); mapList2.add(Map.of("name", "Bob", "age", 30, "gender", "male")); Set<Map.Entry<String, Object>> diff = MapDiffUtil.diff(mapList1, mapList2); System.out.println(diff); } ``` 输出结果为: ``` [name=Bob, age=30, gender=male] [name=Alice, age=21] ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值