如果列表中的最后一个元素与模式匹配,则将其删除

时间:2019-01-02 12:50:37

标签: java filter java-8 java-stream

给出数字字符串[1,3,5,0,2,0,0,0]的列表。有没有办法删除最后一个0,以获取[1,3,5,0,2],如果可能的话,可以使用流。

3 个答案:

答案 0 :(得分:2)

我没有理由在这种情况下使用流。以下代码段简短明了。我会推荐你​​这种方式。

    String[] stringarray = { "1", "3", "5", "0", "2", "0", "0", "0" };

    List<String> strings = new ArrayList<>(Arrays.asList(stringarray));

    while (strings.get(strings.size() - 1).equals("0")) {
        strings.remove(strings.size() - 1);
    }

答案 1 :(得分:1)

如果您至少使用Java9:

List<String> inputList = ...
Predicate<String> predicate = ...

List<String> result = new ArrayList<>(inputList);
Colledtions.reverse(result);
result = result.stream
    .dropWhile(predicate)
    .collect(toList());

答案 2 :(得分:0)

一个简单的解决方案

String[] stringarray = { "1", "3", "5", "0", "2", "0", "0", "0" };
int count = 0;

             for(int i = stringarray.length; i > 0; i--) {
                 if("0".equals(stringarray[i-1])) {
                     count ++;
                 } else {
                     break;
                 }
             }

 String[] result = Arrays.copyOf(stringarray, stringarray.length - count);