如果我有一个名为'TestClass'的类充满了getter和setter,然后我在另一个类的类对象上设置了一些属性,如下所示:
TestClass testClass = new TestClass();
testClass.setAppId("id");
testClass.setStatus("Status");
testClass.setMessage("Message");
List<TestClass> list = dataProvider.getList();
然后,在将此对象添加到我的java列表之前,我必须确保它在列表中不存在以避免重复。
为实现此目的,我将进行以下检查,以查看列表中存在的testClass对象中是否存在相应值的所有三个属性。如果没有,则可以将其添加到列表中。
if(!list.contains(testClass.getAppId().equals("id")) &&
!list.contains(testClass.getStatus().equals("Status")) &&
!list.contains(testClass.getMessage().equals("Message"))) {
list.add(testClass);
}
dataProvider.refresh();
上面的代码位于单击处理程序中,因此只有在单击按钮时才会执行。
为什么然后,尽管我徒劳地尝试阻止重复项进入列表,我是否无法阻止重复记录添加到gwt中的单元格表中?
我认为列表逻辑是问题我错了吗?
感谢您的帮助,我希望我已经足够了。
答案 0 :(得分:1)
testClass.getAppId().equals("id")
返回true或false,天气你的id等于&#34; id&#34;或不。然后,检查您的列表是否包含此呼叫的返回。这就是您无法在列表中仅保留唯一项目的原因。
您可以在testClass类中创建一个equals / compare方法,以便在此函数中定义将要插入的项目是否已存在于您的结构中。
作为一般方法,最好使用哈希,以确保您的数据结构始终存储唯一的项目。
答案 1 :(得分:1)
您的testClass.getAppId().equals("id")
来电返回true
或false
。您的列表不会“包含”true
或false
,因此条件变为true
并添加了元素。代码应如下所示:
for(TestClass testClass: list){
if(!testClass.getAppId().equals("id") &&
!testClass.getStatus().equals("Status") &&
!testClass.getMessage().equals("Message")){
list.add(testClass);
}
}
dataProvider.refresh();