1、 使用IntStream实现的几种方法
intStream文档:https://docs.oracle.com/javase/8/docs/api/java/util/stream/IntStream.html
1) IntStream.range
public static List<Integer> getIndexList(String s, char c) {
return IntStream.range(0, s.length())
.filter(index -> s.charAt(index) == c)
.boxed()
.collect(Collectors.toList());
}
2) IntStream.iterate
public static List<Integer> getIndexList(String s, char c) { return IntStream.iterate(s.indexOf(c), i -> s.indexOf(c, i + 1)) .takeWhile(i -> i > -1) .boxed() .collect(Collectors.toList()); }
或
private static List<Integer> getIndexList(String word, char c) { return IntStream .iterate(word.indexOf(c), index -> index >= 0, index -> word.indexOf(c, index + 1)) .boxed() .collect(Collectors.toList()); }
2、使用Stream.of实现
Stream.of("Hello world!") .map(Scanner::new) .flatMap(s -> s.findAll("l")) .map(mr -> mr.start()) .forEach(System.out::println);