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

Preventing duplicate items in list from printing to cell table gwt

如果我有一个名为 'TestClass' 的 class,其中充满了 getter 和 setter,然后我在另一个 class 中的 class 对象上设置了一些属性,如下所示:

            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 中的单元格 table?

我认为列表逻辑是问题所在吗?

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

testClass.getAppId().equals("id") returns true or false, weather your id equals to "id" or not.然后检查您的列表是否包含此调用的 return。这就是为什么您未能在列表中只维护唯一的项目。

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

作为一般方法,最好使用散列来确保您的数据结构始终存储唯一项。

您的 testClass.getAppId().equals("id") 呼叫 returns truefalse。您的列表不 "contain" truefalse 因此条件变为 true 并添加元素。代码应如下所示:

for(TestClass testClass: list){

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

        list.add(testClass);
    }
}

dataProvider.refresh();