从数组列表中删除所有零?

时间:2014-02-28 06:28:59

标签: java arrays file-io arraylist

所以我现在有:

List<String> lineList = new ArrayList<String>();
String thisLine = reader.readLine();

while (thisLine != null) {
    lineList.add(thisLine);
    thisLine = reader.readLine();
}
System.out.println(lineList);

这主要是读取文本文件并返回文本文件中的数字。 我得到的输出是[0 6 13 0 0 75 33 0 0 0 4 29 21 0 86 0 32 66 0 0] 这似乎是正确的。但是,我要做的是删除所有零而不创建新数组。但是我必须将此字符串arraylist转换为整数数组列表才能这样做吗?我怎么才能删除零? 谢谢!

4 个答案:

答案 0 :(得分:3)

你只需修改你的while循环:

 while (thisLine != null) {
       if(!thisLine.trim().equals("0")) {
           lineList.add(thisLine);
       }
        thisLine = reader.readLine();
    }

编辑:

根据您的输入,上面的代码将不起作用,因为您将所有内容都放在一行中。您应该使用扫描仪来读取它:

Scanner s = new Scanner(new File(<your file path>));
 List<Integer> lineList = new ArrayList<Integer>();

while(s.hasNextInt()){
    int i = s.nextInt();
     if(i!=0) {
         lineList.add(i);
     }
}

希望这有帮助。

答案 1 :(得分:1)

使用removeAll()方法从ArrayList中删除所有零...

  

lineList.removeAll(Collections.singleton(0));

答案 2 :(得分:0)

我会在while循环中使用它:

while (thisLine != null) {
    if(!thisLine.equals("0"){
        lineList.add(thisLine);
    }
    thisLine = reader.readLine();
}

答案 3 :(得分:0)

这样的事情可能就足够了吗?

for(Iterator<String> it=lineList.iterator(); it.hasNext();) {
    String str = it.next();
    if(str.equalsIgnoreCase("0")) {
        it.remove();   
    }
}