我的代码遇到了一个问题,我无法删除数组列表中的空元素。它最终返回,但是这些空元素在多次尝试后不会被删除[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;}
3 回答
三国纷争
TA贡献1804条经验 获得超7个赞
String::isEmpty()
仅检查字符串的长度是否为零。如果您的字符串仅由空格或其他空格组成,则不会返回。true
您可以先执行 ,然后检查 。String.trim()
String.isEmpty()
result.removeIf(s -> s.trim().isEmpty());
米脂
TA贡献1836条经验 获得超3个赞
我相信在Java 8及更高版本中,你可以做这样的事情从列表中删除所有空值:results.removeIf(item -> != StringUtils.isEmpty(item));
天涯尽头无女友
TA贡献1831条经验 获得超9个赞
您可以尝试:
List<Integer> listWithNulls = Arrays.asList(1,null, 2, 3, null, 4); List<Integer> listWithoutNulls = listWithNulls.stream().filter(Objects::nonNull).collect(Collectors.toList());
添加回答
举报
0/150
提交
取消