Как удалить пустые элементы из arrayList в этом коде - PullRequest
0 голосов
/ 01 апреля 2019

У меня возникла проблема с моим кодом, из-за которой я не могу удалить пустые элементы из моего arrayList. В конечном итоге возвращается [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 ]

1 голос
/ 01 апреля 2019

String::isEmpty() только проверяет, равна ли длина строки нулю.Он не возвращает true, если ваша строка состоит только из пробелов или других пробелов.

Вы можете сначала выполнить String.trim(), а затем проверить String.isEmpty().

result.removeIf(s -> s.trim().isEmpty());
0 голосов
/ 01 апреля 2019

Вы можете попробовать:

List<Integer> listWithNulls = Arrays.asList(1,null, 2, 3, null, 4);

List<Integer> listWithoutNulls = listWithNulls.stream().filter(Objects::nonNull).collect(Collectors.toList());
0 голосов
/ 01 апреля 2019

Я верю в Java 8 и выше, вы можете сделать что-то вроде этого, чтобы удалить все пустые значения из списка: results.removeIf(item -> != StringUtils.isEmpty(item));

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...