Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 删除列表中与模式匹配的最后一个元素_Java_Filter_Java 8_Java Stream - Fatal编程技术网

Java 删除列表中与模式匹配的最后一个元素

Java 删除列表中与模式匹配的最后一个元素,java,filter,java-8,java-stream,Java,Filter,Java 8,Java Stream,给定一个数字字符串列表[1,3,5,0,2,0,0,0]。如果可能的话,是否有办法删除最后的0,以获得[1,3,5,0,2],使用流。如果您使用的是java9,至少: List<String> inputList = ... Predicate<String> predicate = ... List<String> result = new ArrayList<>(inputList); Colledtions.reverse(result);

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

如果您使用的是java9,至少:

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

List<String> result = new ArrayList<>(inputList);
Colledtions.reverse(result);
result = result.stream
    .dropWhile(predicate)
    .collect(toList());
列表输入列表=。。。
谓词=。。。
列表结果=新的ArrayList(inputList);
收集。反向(结果);
result=result.stream
.dropWhile(谓词)
.collect(toList());

我认为没有理由在这种情况下使用流。下面的代码片段简短而简单。我建议你这样做

    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);
    }
String[]stringarray={“1”、“3”、“5”、“0”、“2”、“0”、“0”、“0”};
列表字符串=新的ArrayList(Arrays.asList(stringarray));
while(strings.get(strings.size()-1).equals(“0”)){
strings.remove(strings.size()-1);
}
一个简单的解决方案

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);

你是说重复的数字吗?我只想删除最后三个0,而不删除不在列表末尾的0。这只是一个例子,结尾的0可能是不同的数字……到目前为止你都尝试了什么?谢谢,很有趣,但我只运行Java8,不能使用dropWhile。无论如何,您是对的,这里可以使用反向机制。或者您甚至可以在字符串匹配
int count=2时,从input和pop()创建一个Deque;while(strings.get(strings.size()-1).equals(“0”)&&count>=0){count--;strings.remove(strings.size()-1);}
因为不适用于
{1”、“3”、“5”、“0”、“2”、“0”、“0”、“0”、“0”}