当前位置: 首页 > 知识库问答 >
问题:

在数组列表的数组列表中删除

蒋华美
2023-03-14
public Point{
int x, y;

public Point(int x, int y){
    int x = x;
    int y = y;
}
}
ArrayList<Point> points = new ArrayList<>();

// add points by using points.add() then use this loop 
ArrayList<ArrayList<Point>> A = new ArrayList<>();
    for (int i = 0; i < 3; i++) {
            A.add(points);

        }

我有一个arraylist的arraylist,每个arraylist都有相同的点,例如,当您打印时,这是输出

ArrayList<ArrayList<Point>> A = [[(0,10), (20,3), (2,5), (2,8)], [(0,10), (20,3), (2,5), (2,8)], [(0,10), (20,3), (2,5), (2,8)]]

在打印之前,我要删除其x值不等于数组列表索引的所有点

A.get(0) = [(0,10)]
A.get(1) = []
A.get(2) = [(2,5),(2,8)]

所以输出应该是

[[(0,10)], [], [(2,5), (2,8)]]

我尝试使用remove方法和for循环以及其他方法,但都不起作用。

for(int i = 0; i < list.size();i++){
            if(list.get(i).x != 0){
                list.remove(i--);
            }
        }

有人能帮忙吗?

共有2个答案

邰勇军
2023-03-14
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

public class teste {

    public static void main(String[] args) {

        ArrayList<Point> points = new ArrayList<>();

        points.add(new Point(0, 10));
        points.add(new Point(9, 10));
        points.add(new Point(20, 3));


        System.out.println(points);
        //solution 1
        List<Point> list = points.stream().filter(o -> !o.equals(9, 10)).collect(Collectors.toList());
        System.out.println(list);
        
        //solution 2
        List<Point> list2 = new ArrayList<>();
        points.stream().forEach(o -> {
            if (o.equals(9, 10)) {
                list2.add(null);
            } else {
                list2.add(o);
            }
        });

        System.out.println(list2);
    }



    public static class Point {
        int x, y;

        public Point(int x, int y) {
            this.x = x;
            this.y = y;
        }

        public String toString() {
            return "(" + x + ", " + y + ")";
        }

        public boolean equals(int x, int y) {
            return this.x == x && this.y == y;
        }

    }

}


[(0, 10), (9, 10), (20, 3)]
[(0, 10), (20, 3)]
[(0, 10), null, (20, 3)]
羿经武
2023-03-14

您可能正在寻找以下内容:

int index = 0;
for (ArrayList<Point> list : A) {
     list.removeIf(point -> point.x != index);
     index++;
}

索引变量也可以删除,但我不想过分简化代码,以保持清晰。

 类似资料:
  • 我是Java和Stack Overflow的新手,我有一个关于排列的问题。 方法:我使用中的对象生成。每个的大小从(可能最小为1)到,并包含具有唯一名称属性的自定义生成对象。 问题:现在我的问题是如何在我的外部(y轴)中获得从第一个到最后一个的所有可能对象组合的排列(我想我们可以说这是x轴)? 我试着举一个简单的例子: : 1.1|1.2|1.3 : 2.1 : 3.1|3.2 这里,这些位于外部

  • 我想在Sokoban游戏中保存我的玩家角色的步骤。首先我想用字符的实际位置填充一个int x和y的数组,称为“pos”。然后我想将这个数组添加到数组的ArrayList中,称为“moves”。 一个玩家位置的阵列: ArrayList为所有步骤,玩家在关卡: 如果将“int[]”放在ArrayList的尖括号内,则会出错。 如何将阵列位置添加到ArrayList移动?

  • 在有趣的功能中,当我将列表添加到其他列表时,它正在添加空列表,我可以找到原因有人可以帮助我这个程序是关于查找给定数组的不同组合

  • 我如何将一个简单的列表转换成一个Numpy数组?这些行是单独的子列表,每行包含子列表中的元素。

  • 问题内容: 用Java制作数组列表的语法是什么? 我尝试了以下方法: 还有很多其他事情 我需要能够对int数组进行重新排序,但是int数组的元素不需要更改。如果这不可能,为什么呢? 谢谢。 问题答案: 首先,您不能做的是接口。 要列出int数组,请执行以下操作: PS 根据评论,List的包和ArrayList的包

  • 目前,我创建了单独的,最后连接这些,以创建一个。 是否有优雅的或一个衬里来从数组列表和多个数组中创建df。