给定一个由四个点组成的数组,使用相同的点生成一个新的数组/向量/ arraylist(更容易)但是如果有重复X值的点,则只保存具有最高Y值的Point。
例如:
如果给定(3,2),(3,1),(1,2),(1,1),则此方法应仅输出(3,2)和(1,2)。
如果给定(3,2),(3,3),(3,4),(3,5),则此方法应仅输出(3,5)。
关于我应该如何处理的任何想法?我的解决方案一直在运行ConcurrentModificationException。
(for each point a in array) {
(for each point b in newArray) {
(if a and b have the same x and a has a greater y) {
remove a
add b
} else {
add b
}
}
答案 0 :(得分:1)
简单HashMap<Integer,Integer>
可行。只需查看ContainsKey()
并比较值,有条件地添加或不添加。
答案 1 :(得分:0)
如果您的代码处于多线程环境中,请使用
ConcurrentHashMap<Integer, Integer>
并遍历每个元素并比较元素并将最高元素放在Map
答案 2 :(得分:0)
put the first point in result list
for each of the other three:
if last X in result list not equal to this X:
append point
else if last Y < this Y:
replace last point
return result list
我会把javafication留给你
答案 3 :(得分:0)
通过javadocs,你可能正在做类似的事情,修改一个Collection并在另一个线程的同时迭代它。
ConcurrentModificationException