关闭。这个问题需要细节或清晰。它目前不接受答案。
**想改进这个问题吗?**通过编辑这个帖子来添加细节并澄清问题。
上个月关门了。
改进这个问题
我有以下2d数组:
ID Site Place
1.0 222.23 333.23
2.0 222.0 311.11
3.0 22.23 111.2
0.0 222.23 333.23
4.0 22.23 121.1
1.0 222.23 333.23
5.0 222.23 333.23
我要删除具有相同站点和位置的所有行,并选择最小的id。对于给定的2d数组,输出应为:
ID Site Place
2.0 222.0 311.11
3.0 22.23 111.2
0.0 222.23 333.23
4.0 22.23 121.1
我试过这样做,但是时间太长了。我还创建了另一种方法(见下面的代码),但只删除精确的副本。一个简单的解释代码片段将不胜感激。
public static void main(String[]args){
Double[][] loc_t = {
{1.0,222.23,333.23},
{2.0, 222.00, 311.11},
{3.0, 22.23, 111.2},
{0.0, 222.23, 333.23},
{4.0, 22.23, 121.1},
{1.0, 222.23, 333.23},
{5.0, 222.23, 333.23},
};
System.out.println("ID Site Place");
Arrays.stream(loc_t)
.map(Arrays::asList)
.distinct()
.forEach(row -> System.out.printf("%-3s%-7s%s\n", row.get(0), row.get(1), row.get(2)));
}
1条答案
按热度按时间jv4diomz1#
确实,distinct只会确保值是唯一的,因此无法删除重复项。
下面收集项目并计数数字'filter(e->e.getvalue()==1)'确保流输出中只允许计数为1的项目进行收集。