删除重复键并仅保存最新

时间:2016-12-10 11:24:05

标签: java list

使用List有什么样的Java实践? 这是我的问题:

我实际上有两个对象:一个DataPoint对象和一个Collector对象。

收藏家具有List<DataPoint>列表属性。 列出的此DataPoint对象由3个值定义: 类型,值和单位。

我的目标是编写一个收集器的方法,该方法将删除我的DataPoint列表中的重复TYPE元素,并仅存储最后一个。 所以在这个方法的最后,我的List只能得到不同类型的DataPoint。没有2。

最好的方法是什么?我是Java初学者!

3 个答案:

答案 0 :(得分:0)

hashCode课程上实施适当的equalsDataPoint方法 并使用java.util.Set实现仅存储列表中的唯一值。

Set<DataPoint> set = new HashSet<DataPoint>;
set.addAll(list);

答案 1 :(得分:0)

您可以从列表末尾迭代列表,保存唯一类型(例如,使用Set),并删除已遇到类型的任何点。例如。 (假设数据成员被称为points):

public void retainUniqueTypes() {
    Set<Type> types = new HashSet<>();
    while (iter.hasPrevious()) {
        DataPoint current = iter.previous();
        if (!types.add(current.getType())) {
            iter.remove();
        }
    }
}

答案 2 :(得分:0)

处理此问题的最佳方法是。将List<DataPoint>更改为Set<DataPoint>,原因是Set不会有重复项。
同时确保您在equals

中正确实施hashcodeDataPoint