防止列表中的重复项从打印到单元格表gwt

时间:2015-07-07 13:53:33

标签: java gwt

如果我有一个名为'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中的单元格表中?

我认为列表逻辑是问题我错了吗?

感谢您的帮助,我希望我已经足够了。

2 个答案:

答案 0 :(得分:1)

testClass.getAppId().equals("id")返回true或false,天气你的id等于&#34; id&#34;或不。然后,检查您的列表是否包含此呼叫的返回。这就是您无法在列表中仅保留唯一项目的原因。

您可以在testClass类中创建一个equals / compare方法,以便在此函数中定义将要插入的项目是否已存在于您的结构中。

作为一般方法,最好使用哈希,以确保您的数据结构始终存储唯一的项目。

答案 1 :(得分:1)

您的testClass.getAppId().equals("id")来电返回truefalse。您的列表不会“包含”truefalse,因此条件变为true并添加了元素。代码应如下所示:

for(TestClass testClass: list){

    if(!testClass.getAppId().equals("id") &&
        !testClass.getStatus().equals("Status") &&
        !testClass.getMessage().equals("Message")){

        list.add(testClass);
    }
}

dataProvider.refresh();