List<Action> action = noDuplicate Object();
List<Action> actions = duplicate Object();
我想添加列表并只有不同的对象吗?有什么建议吗?请不要使用覆盖equals和hashcode()
方法,因为我无法放置,因为它是由JAXB生成的。从列表中删除重复的对象,而不会覆盖equals中的hashcode方法
List<Action> action = noDuplicate Object();
List<Action> actions = duplicate Object();
我想添加列表并只有不同的对象吗?有什么建议吗?请不要使用覆盖equals和hashcode()
方法,因为我无法放置,因为它是由JAXB生成的。从列表中删除重复的对象,而不会覆盖equals中的hashcode方法
您可以执行以下操作。
创建新的包装类
类ActionWrapper { 私人诉讼行动; //等于和基于行动领域 }
使用SET而不是List哈希代码在这里
最后转换设置列出这样的事情actionWrappers.stream().map((s) -> s.getAction()).collect(Collectors.toList())
感谢您的建议...我们可以有任何答案而不使用包装类。请 ? – Abhishek
不幸的是,你不知道你打算如何确定重复的对象。假设您在Action class String name,Date dateCreated中具有以下字段。只有name1 == name2和date1 == date2,action才等于另一个。我们来创建一个映射Map
感谢Maxim提供的建议。 – Abhishek
您可以在列表上向后迭代,然后检查每个项目是否在剩余列表中找到重复:如果您发现重复删除当前项目并继续。
import org.junit.Assert;
import org.junit.Test;
import java.util.ArrayList;
import java.util.List;
public class ListTest {
@Test
public void listDedup() throws Exception {
List<String> duplicates = new ArrayList<>();
duplicates.add("a");
duplicates.add("a");
duplicates.add("A");
duplicates.add("b");
Assert.assertEquals(4, duplicates.size());
/* iterate backwards, so that we can safely remove items
* from the list that we are iterating over
*/
for (int i = duplicates.size() - 1; i >= 0; i--) {
String item = duplicates.get(i);
// now check the remaining items in the list for duplicates
for (int j = i - 1; j >= 0; j--) {
String possibleDuplicate = duplicates.get(j);
// check for equality: use any comparison operation you like
if (item.equalsIgnoreCase(possibleDuplicate)) {
// this is a duplicate - remove it
duplicates.remove(i);
// break the inner loop because we already have a duplicate
break;
}
}
}
// only "a" and "b" reamin in the list
Assert.assertEquals(2, duplicates.size());
Assert.assertEquals("a", duplicates.get(0));
Assert.assertEquals("b", duplicates.get(1));
}
}
如果没有平等,哈希码是定义了jvm如何知道元素是否是dupos? –
你说的是元素....我们需要实现equals()和hashcode()方法,在我的场景中我不能使用Action类的equals方法,因为它是从JAXB xjc生成的。 – Abhishek
so no equals no hashcode no wrappers ....你确定要实现什么吗? –