java - 在 ArrayList 中“合并”多个相同类型的元素
问题描述
我有一个名为 ADVAObject 的类,带有一个变量“类型”和“值”:
public class ADVAObject {
String type = "";
String value = "";
}
然后,我做了一些ArrayList<ADVAObject> pattern = new ArrayList<ADVAObject>();
. 经过一些处理后,我最终使用了以下列表:
for(ADVAObject a : pattern) {
System.out.println(a.type + " : " + a.value);
}
名单:
STRING : V
STRING : A
STRING : R
STRING : I
STRING : A
STRING : B
STRING : L
STRING : E
SPACE : null
SPECIAL : null
SPACE : null
NUMBER : 3
NUMBER : 4
SPACE : null
DIV : null
SPACE : null
NUMBER : 5
NUMBER : 6
SPACE : null
QUESTION : null
如您所见,我没有得到“变量”,而是将其分开。目前这不是问题。“目前”?是的。你看,我想让它们分开来做额外的处理,但现在我需要“合并”,正如这个问题的标题所说,所有重复的元素都有一个值(不为空)。所以:
//This:
STRING : AB
STRING : CD
STRING : EF
//Turns into this:
STRING : ABCDEF
//However, ...:
//This:
SPACE : null
SPACE : null
//Can't turn into this:
SPACE : null
//.
我尝试创建一个单独的数组并在一些循环中对其进行正则表达式,但它没有......按预期工作。
解决方案
您应该查看的内容,而不是数组列表,可以是带有链表的 HashMap,或者是数组列表,因为它的参数如下:
编辑:更改ArrayList<String>
为ArrayList<ADVAObject>
与您正在使用的课程保持一致
HashMap<String, ArrayList<ADVAObject>> keyValues = new HashMap<>();
这样,即使存在重复项,您也可以映射每个值,例如,STRING 可能是键,其值将是:ABCDEF。
注意:要处理看到的重复值,您可以只使用一个仅添加重复值之一的条件语句
希望这可以帮助 :)
推荐阅读
- javascript - 如何使用 reactjs、formik 和 axios 创建方法编辑数据
- java - JAVA中的番石榴速率限制器
- swift - SpriteKit - 未找到字体
- python - 是否有一种可编程的方法来计算幂和的指数值
- optimization - 为什么打开 gfortran 编译器优化后 matmul 会变慢?
- svm - 如何判断一个多类数据集是否线性可分?
- kotlin - IntelliJ 错误 - 无法为初始化脚本打开初始化通用类缓存
- arrays - 使用 yq 有条件地向数组元素添加属性(版本 4)
- android - Mapbox 地图是黑色的使用 jetpack compose
- spring - 以分钟为单位从 application.properties 读取预定速率