在Java中,从字符串列表中删除空元素

73
在Java中,我有一个字符串的ArrayList,例如:
[,Hi, ,How,are,you]

我想要移除掉空和null元素,应该怎样修改代码才能达到以下效果:

[Hi,How,are,you]
14个回答

2

lukastymo的答案似乎是最好的。

但是也值得一提的是这种方法的可扩展性:

List<String> list = new ArrayList<String>(Arrays.asList("", "Hi", null, "How"));

list = list.stream()
           .filter(item -> item != null && !item.isEmpty())
           .collect(Collectors.toList());

System.out.println(list);

我理解的“可扩展性”指的是您可以添加其他过滤器,例如:

按照此定义,编写的代码具有较高的灵活性和可维护性。

          .filter(item -> !item.startsWith("a"))

尽管当然这与问题无关。

1
List<String> list = new ArrayList<String>(Arrays.asList("", "Hi", "", "How"));
           Stream<String> stream = list .stream();
           Predicate<String> empty = empt->(empt.equals(""));
            Predicate<String> emptyRev = empty.negate();
           list=  stream.filter(emptyRev).collect(Collectors.toList());

或者

list =  list .stream().filter(empty->(!empty.equals(""))).collect(Collectors.toList());

0
   private List cleanInputs(String[] inputArray) {
        List<String> result = new ArrayList<String>(inputArray.length);
        for (String input : inputArray) {
            if (input != null) {
                String str = input.trim();
                if (!str.isEmpty()) {
                    result.add(str);
                }
            }
        }
        return result;
    }

0

// 这里我发布了两种方法,请仔细阅读

private static void consumerExample() {
    List<String> list = Arrays.asList("Java", "\n \n", "Python", " ", null);
    System.out.println("==================== ");
    Consumer<List<String>> modify = list1 -> {
        for (int i = 0; i < list1.size(); i++)
            if (getOnlyStrings(list1.get(i)).length() > 0)
                System.out.println(list1.get(i));
    };
    modify.accept(list);
    System.out.println("====================");
}

public static String getOnlyStrings(String s) {
    String str = "";
    try {
        Pattern pattern = Pattern.compile("[^a-z A-Z]");
        if (s == null || s.trim().length() == 0)
            return "";
        Matcher matcher = pattern.matcher(s);
        str = matcher.replaceAll("");
    } catch (Exception e) {
        e.printStackTrace();
    }
    return str;
}

public static void main(String[] args) {
    consumerExample();
    List<String> list = Arrays.asList("Java", "\n \n", "Python", " ", null);

    List<String> collection = new ArrayList<>(Arrays.asList("A", null, "B", null, "C", "", "D"));

    // collection.removeIf(s -> s == null || "".equals(s));

    // System.out.println(collection);

    list.stream().filter(p -> getOnlyStrings(p).length() > 0).forEach(System.out::println);
    ;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接