查找并添加一个带有空字符串的数组到多维arraylist

时间:2017-04-19 01:19:57

标签: java string arraylist

使用Swift几年后,我对简单的Java操作感到困惑。

我有一个ArrayList,就像这样

[[],["1","2","3","4"],[],["5","6","7","8"]]

我想遍历列表并删除任何等于[""]的元素。然后,我想在需要时将此元素插入要返回的列表中。

public ArrayList<ArrayList<String>> getWaypointCoordinates(ArrayList<ArrayList<String>> flightplan)
    {
        ArrayList<ArrayList<String>> finalArray = new ArrayList<>();

        // Save all coordinates into one array
        for (int i=0; i<flightplan.size(); i++)
        {
            ArrayList<String> currentPoint = flightplan.get(i);
            if (currentPoint != [""])
            {
                String lat = currentPoint.get(3);
                String lng = currentPoint.get(4);
                ArrayList<String> currentArray = new ArrayList<String>();
                currentArray.set(0, lat);
                currentArray.set(1, lng);
                finalArray.add(currentArray);
            }
            else
            {
                finalArray.add([""]);
            }
        }

        return finalArray;
    }

两行出错:

if(currentPoint!= [&#34;&#34;])

finalArray.add([&#34;&#34;])

这是如何在Java中实现的?

谢谢!

编辑:

感谢其他人的帮助,这似乎现在有效:

public ArrayList<List<String>> getWaypointCoordinates(ArrayList<List<String>> flightplan)
    {
        ArrayList<List<String>> finalArray = new ArrayList<List<String>>();

        // Save all coordinates into one array
        for (int i=0; i<flightplan.size(); i++)
        {
            List<String> currentPoint = flightplan.get(i);
            if ((currentPoint.size() > 1) && (!currentPoint.get(0).equals("")))
            {
                String lat = currentPoint.get(3);
                String lng = currentPoint.get(4);
                ArrayList<String> currentArray = new ArrayList<String>();
                currentArray.set(0, lat);
                currentArray.set(1, lng);
                finalArray.add(currentArray);
            }
            else
            {
                //finalArray.add([""]);
                finalArray.add(Arrays.asList(""));
            }
        }

        return finalArray;
    }

1 个答案:

答案 0 :(得分:1)

那些错误只是那里的括号,在java ""中是一个String,其中没有任何内容,你只需要这样写:

if (currentPoint != "")

finalArray.add("")

但是当你这样做时,它不适用于if-statement中的比较。因为在java中,String不是可以使用==, !=, <, >, >=, <=运算符进行比较的基本类型变量。它是一个类型变量,可以像它需要的那样,但是当你需要比较Strings时,你需要使用不同的方法。例子:

String s = "";
String s2 = "so";
String s3 = "";
boolean b;

b = s.equals(s2);
System.out.println(b);
//Will give you false.

b = s.equals(s3);
System.out.println(b);
//Will give you true.

==运算符不在这种情况下工作的主要原因是它测试引用相等性(它们是否是同一个对象),而.equals()测试值相等(是否为逻辑上&#34;平等&#34;)。

修改

首次创建finalArray时,请将其初始化为ArrayList的{​​{1}}。这就是为什么当您尝试添加ArrayLists String时,它会失败的原因。