![](/img/trans.png)
[英]How to get an String and the ArrayList stored in a Arraylist of objects of a class using Java stream
[英]How to get unique rows using SET class from an Arraylist of “Arraylist string objects” of Type Setters & Getters class
我需要Java代码方面的帮助,例如如何从arraylist获得唯一记录,该arraylist是转换一维Value对象(setters和getters)的多维数组。
我正在读取表,并将所有记录放入arraylist的Ararylist中。 “表格”每个表有3列25行,其中有一些物料编号是唯一的,有一些是重复的。 我想摆脱重复的物料编号行,而仅获得唯一的物料编号行。
ArrayList<EssVO> recordInstance = new ArrayList<EssVO>();
EssVO ESSvorecord = new EssVO();
for (int i = 0; i < table.getNumRows(); i++){
table.setRow(i);
ESSvorecord = new EssVO();
ESSvorecord.setCONTRACT_NUMBER(table.getString("CONTRACT_NUMBER"));
ESSvorecord.setCONTRACT_LINE_ITEM(table.getString("CONTRACT_LINE_ITEM"));
ESSvorecord.setMATERIAL_NUMBER(table.getString("MATERIAL_NUMBER"));
recordInstance.add(ESSvorecord);
}
//Display
Iterator<EssVO> itrForSubs = recordInstance.iterator();
while(itrForSubs.hasNext()){
ESSvorecord = itrForSubs.next();
ESSvorecord.getCONTRACT_NUMBER();
ESSvorecord.getCONTRACT_LINE_ITEM();
ESSvorecord.getMATERIAL_NUMBER();
}
感谢您的投入和帮助。
谢谢拉吉
您可以将列表添加到java.util.Set中(在我的示例中使用LinkedHashSet),该列表仅包含唯一对象。 “唯一”由放置在List和Set中的对象中实现的方法(hashCode()和equals())定义。 在实现hashCode()和equals()方法之后,您可以将List放入Set中,该List仅包含基于equals()和hashCode()的唯一记录。
这是EssVO的hashCode()和equals()的代码示例:
@Override
public int hashCode() {
return this.number.hashCode();
}
@Override
public boolean equals(Object obj) {
if(EssVO.class.isInstance(obj))
{
EssVO essVO = (EssVO)obj;
if(this.number.equals(essVO.getNumber()))
{
return true;
}
}
return false;
}
List<EssVO> list = new ArrayList<EssVO>(2);
list.add(new EssVO("A1", "A1 Name", "This A1 Name"));
list.add(new EssVO("A2", "A2 Name", "This A2 Name"));
list.add(new EssVO("A3", "A3 Name", "This A3 Name"));
list.add(new EssVO("B1", "B1 Name", "This B1 Name"));
list.add(new EssVO("B2", "B2 Name", "This B2 Name"));
list.add(new EssVO("A2", "A2 Name", "This A2 Name"));
list.add(new EssVO("A3", "A3 Name", "This A3 Name"));
list.add(new EssVO("C1", "C1 Name", "This C1 Name"));
list.add(new EssVO("B2", "B2 Name", "This B2 Name"));
Set<EssVO> set = new LinkedHashSet<EssVO>();
set.addAll(list);
您可以使用Java5 foreach循环来做到这一点。
for (EssVO essVO : set)
{
System.out.println(essVO);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.