使用List有什么样的Java实践? 这是我的问题:
我实际上有两个对象:一个DataPoint
对象和一个Collector
对象。
收藏家具有List<DataPoint>
列表属性。
列出的此DataPoint对象由3个值定义:
类型,值和单位。
我的目标是编写一个收集器的方法,该方法将删除我的DataPoint列表中的重复TYPE元素,并仅存储最后一个。 所以在这个方法的最后,我的List只能得到不同类型的DataPoint。没有2。
最好的方法是什么?我是Java初学者!
答案 0 :(得分:0)
在hashCode
课程上实施适当的equals
和DataPoint
方法
并使用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
hashcode
和DataPoint