如何从此代码中的数组列表中删除空元素

我的代码遇到了一个问题,我无法删除数组列表中的空元素。它最终返回,但是这些空元素在多次尝试后不会被删除[1, 2, 3, 0, 8,  , 12 ,  ,   34 , 0 ]


public static ArrayList<String> readNumbers() {

    Scanner inFile = null;

    File file = null;

    String filePath = (JOptionPane.showInputDialog("Please enter a file path"));

    int size = 0;

    ArrayList<String> result = new ArrayList<String>();


    try {

        file = new File(filePath);

        inFile = new Scanner(file);

        int skippedCounter = 0;


        for(int i = 0; inFile.hasNext(); i++){

            if(inFile.hasNextInt())

                result.add(inFile.next());

            else{

                String strOut = "";

                String data = inFile.nextLine();


                for(int j = 0; j <= data.length() - 1; j++){

                    if(!Character.isLetter(data.charAt(j))){

                        strOut += data.charAt(j);

                    }

                    else

                        skippedCounter++;

                }

                if(!strOut.isEmpty())

                    result.add(strOut);

            }

        }

    } 

    catch (FileNotFoundException e) {

        System.out.println("File not found");

    } 

    catch(NumberFormatException e){

        System.out.println("Not a number");

    }

    finally {

        inFile.close();

    }

    int count = 0;

    result.removeIf(String::isEmpty);


    return result;

}


慕码人2483693
浏览 133回答 3
3回答

三国纷争

String::isEmpty()仅检查字符串的长度是否为零。如果您的字符串仅由空格或其他空格组成,则不会返回。true您可以先执行 ,然后检查 。String.trim()String.isEmpty()result.removeIf(s&nbsp;->&nbsp;s.trim().isEmpty());

米脂

我相信在Java 8及更高版本中,你可以做这样的事情从列表中删除所有空值:results.removeIf(item -> != StringUtils.isEmpty(item));

天涯尽头无女友

您可以尝试:List<Integer>&nbsp;listWithNulls&nbsp;=&nbsp;Arrays.asList(1,null,&nbsp;2,&nbsp;3,&nbsp;null,&nbsp;4); List<Integer>&nbsp;listWithoutNulls&nbsp;=&nbsp;listWithNulls.stream().filter(Objects::nonNull).collect(Collectors.toList());
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java