JavaArrayList集合操作?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaArrayList集合操作?相关的知识,希望对你有一定的参考价值。
Java中list集合中存在某些字段相同的实体类,把那些指定字段相同的实体类合成一条,并且其中累加,该怎么操作,各位大佬😭😭
假设需要合并的实体类是一个Java类,包含了多个字段,其中需要合并的字段名为"fieldName",那么可以按照以下步骤进行操作:
定义一个Map,用于存储合并后的实体类,其中Key为"fieldName"的值,Value为合并后的实体类。
Map<Object, YourEntityClass> resultMap = new HashMap<>();
遍历List集合,对于每一个实体类,根据"fieldName"的值从Map中获取已经合并的实体类,如果不存在,则将当前实体类添加到Map中;如果存在,则将当前实体类的相应字段累加到已经存在的实体类中。
for (YourEntityClass entity : yourList)
Object key = entity.getFieldName();
if (resultMap.containsKey(key))
YourEntityClass existingEntity = resultMap.get(key);
// 累加相应字段
existingEntity.setSomeField(existingEntity.getSomeField() + entity.getSomeField());
else
resultMap.put(key, entity);
最终,将合并后的实体类从Map中取出来,组成一个新的List返回。
List<YourEntityClass> result = new ArrayList<>(resultMap.values());
这样,就可以实现根据某个字段值合并实体类并累加相应字段的操作。
参考技术A可以使用Java8的Stream API来实现将指定字段相同的实体类合并,并累加操作。具体实现步骤如下:
定义一个Map,用于存储指定字段相同的实体类;
遍历list集合中的每一个实体类,根据指定字段的值作为Map的key,将相同key的实体类放到同一个List中;
对每一个List中的实体类进行累加操作,并将结果更新到第一个实体类上;
将Map中的实体类转换成List返回。
示例代码如下:
import java.util.*;
import java.util.stream.Collectors;
public class Entity
private String field1;
private int field2;
public Entity(String field1, int field2)
this.field1 = field1;
this.field2 = field2;
public String getField1()
return field1;
public void setField1(String field1)
this.field1 = field1;
public int getField2()
return field2;
public void setField2(int field2)
this.field2 = field2;
public class Main
public static void main(String[] args)
List<Entity> list = new ArrayList<>();
list.add(new Entity("A", 1));
list.add(new Entity("B", 2));
list.add(new Entity("A", 2));
list.add(new Entity("B", 3));
Map<String, List<Entity>> map = list.stream()
.collect(Collectors.groupingBy(Entity::getField1));
List<Entity> result = new ArrayList<>();
for (List<Entity> entities : map.values())
Entity first = entities.get(0);
for (int i = 1; i < entities.size(); i++)
Entity entity = entities.get(i);
first.setField2(first.getField2() + entity.getField2());
result.add(first);
System.out.println(result);
上述代码中的Entity类表示实体类,包含两个字段:field1和field2。Main类中的main方法演示了如何将指定字段相同的实体类合并,并且将相同字段的field2值累加。运行该程序将输出以下结果:
[Entityfield1='A', field2=3, Entityfield1='B', field2=5]
其中,输出结果表示将list中的指定字段相同的实体类合并之后的结果。
参考技术B public List<Entity> mergeList(List<Entity> list)Map<String, Entity> map = new HashMap<>();
for (Entity entity : list)
String key = entity.getSpecifiedField(); // 获取指定字段的值作为key
Entity existEntity = map.get(key);
if (existEntity != null) // 如果存在相同的key,则将实体类对象累加
existEntity.setNum(existEntity.getNum() + entity.getNum());
existEntity.setAmount(existEntity.getAmount() + entity.getAmount());
else
map.put(key, entity); // 如果不存在相同的key,则将实体类对象放入Map中
return new ArrayList<>(map.values());
本回答被提问者采纳
以上是关于JavaArrayList集合操作?的主要内容,如果未能解决你的问题,请参考以下文章
Groovy集合遍历 ( 操作符重载 | 集合中的 “ << “ 操作符重载 | 使用集合中的 “ << “ 操作符添加一个元素 | 使用集合中的 “ << “ 操作符添加一个集合 )
Groovy集合遍历 ( 操作符重载 | 集合中的 “ << “ 操作符重载 | 使用集合中的 “ << “ 操作符添加一个元素 | 使用集合中的 “ << “ 操作符添加一个集合 )