我需要你在java代码中的帮助,比如我如何从arraylist获取唯一记录,这是一个投射一类Value对象(setter和getters)的多维数组。
我正在阅读一张桌子并将所有记录放入arraylist的ararylist中。 “table”将有每个表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();
}
感谢您的意见和帮助。
由于 拉吉
答案 0 :(得分:0)
答案 1 :(得分:0)
您可以将列表添加到java.util.Set(在我的示例中使用LinkedHashSet),该列表仅包含唯一对象。 “Unique”由您放入List和Set的对象中实现的方法(hashCode()和equals())定义。 在实现hashCode()和equals()方法之后,您可以将List放入Set中,该Set仅包含基于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);
答案 2 :(得分:0)
您可以使用Java5 foreach循环来执行此操作。
for (EssVO essVO : set)
{
System.out.println(essVO);
}