如何配置ubuntu可被外网访问【内网
650 2023-04-03 04:35:40
Java8引入Stream,主要用来处理集合,可以执行查找,过滤,映射等操作
特点:
//CollectionList<String> list = new ArrayList<>();Stream<String> OrderStream = list.stream(); //顺序流Stream<String> parallelStream = list.parallelStream(); //并行流//ArraysInteger[] nums = new Integer[10];Stream<Integer> stream = Arrays.stream(nums);//StreamStream<Integer> stream1 = Stream.of(1,2,3,4,5,6);Stream<Integer> stream2 = Stream.iterate(0, (x) -> x + 1).limit(1);//0,1,2,3,4Stream<Double> stream3 = Stream.generate(Math::random).limit(2);//随机生成两个doublestream3.forEach(System.out::println);//stream流的输出//BufferedReader.lines()BufferedReader reader = new BufferedReader(new FileReader("a.txt"));Stream<String> stream = reader.lines();//Pattern.splitAsStream(),分割字符串为流Pattern pattern = Pattern.compile(",");Stream<String> stringStream = pattern.splitAsStream("a,b,c,d");
allMatch() 接收一个Predicate函数,当流中元素都符合该断言返回TRUE,否则返回FALSE
noneMatch() 接收一个Predicate函数,当流中每个元素都不符合该断言则返回TRUE,否则返回FALSE
anyMatch() 接收一个Predicate函数,当流中有一个元素符合该断言则返回TRUE,否则返回FALSE
findFirst() 返回流中的第一个元素
findAny() 返回流中的任意元素
count() 返回流中元素的个数
max()/min() 返回流中元素的最大值,最小值
Optional<T> reduce(BinaryOperator<T> accumulator)
T reduce(T identity, BinaryOperator<T> accumulator)
<U> U reduce(U identity,BiFunction<U, ? super T, U> accumulator,BinaryOperator<U> combiner)
collect() 接收一个Collector实例,将流中的元素收集为另一种数据结构
Collector工具包
将List元素存储到数组
List<Integer> list=new ArrayList<>(Arrays.asList(1,2,3,4,5));int[] arr=list.stream().mapToInt(Integer::intValue).toArray();
将数组元素存储到List
List<Integer> list2=Arrays.stream(arr).boxed().collect(Collectors.toList());
统计元素个数
Map<Integer, Long> map = Stream.of(arr) .collect(Collectors.groupingBy(Function.identity(), Collectors.counting())) .entrySet() .stream() .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (m1, m2) -> m2, LinkedHashMap::new));Map<Integer, Integer> map2=Stream.of(arr).collect(Collectors.toMap(k->k, k->1,Integer::sum));//统计并输出Stream.of(arr).collect(Collectors.toMap(k->k, k->1,Integer::sum)).forEach((k,v)-> System.out.println(k+" : "+v));
自定义排序
int[] arr={1,5,9,7,2,3,7,-1,0,3};arr= IntStream.of(arr).boxed().sorted(Comparator.reverseOrder()).mapToInt(Integer::intValue).toArray();
统计前k个高频元素
int[] arr={4,3,2,3,4,1,2,3,1,2,1};int k=3;int[] res=IntStream.of(arr) .boxed() .collect(Collectors.toMap(x->x,x->1,Integer::sum)) .entrySet() .stream() .sorted((e1,e2)-> e2.getValue()-e1.getValue()).limit(k) .mapToInt(Map.Entry::getKey) .toArray();