package com.cyh.java8; import org.junit.Assert; import org.junit.BeforeClass; import org.junit.Test; import java.util.ArrayList; import java.util.List; import java.util.Optional; import java.util.stream.Collectors; public class Demo { private static List<Integer> list = new ArrayList<>(5); @BeforeClass public static void init(){ for (int i = 0; i < 50000000; i++) { list.add(i); } } /** * anyMatch 方法測試 */ @Test public void comparison(){ //數據在1萬如下 contains快於anyMatch 特別是在中位數時明顯快於anyMatch List<Long> ls = new ArrayList<>(16); /*List<Integer> collect = list.stream().limit(10000).collect(Collectors.toList()); ls.add(System.currentTimeMillis()); if (collect.stream().anyMatch(x->x.intValue()==1000)) { ls.add(System.currentTimeMillis()); } if (collect.stream().anyMatch(x->x.intValue()==5000)) { ls.add(System.currentTimeMillis()); } if (collect.stream().anyMatch(x->x.intValue()==9000)) { ls.add(System.currentTimeMillis()); } if (collect.contains(1000)) { ls.add(System.currentTimeMillis()); } if (collect.contains(5000)) { ls.add(System.currentTimeMillis()); } if (collect.contains(9000)) { ls.add(System.currentTimeMillis()); } statistics(ls);*/ /* * 3 * 2 * 1 * 2 * 0 * 1 */ /* List<Integer> col = list.stream().limit(100000).collect(Collectors.toList()); ls.add(System.currentTimeMillis()); if (col.stream().anyMatch(x->x.intValue()==10000)) { ls.add(System.currentTimeMillis()); } if (col.stream().anyMatch(x->x.intValue()==50000)) { ls.add(System.currentTimeMillis()); } if (col.stream().anyMatch(x->x.intValue()==90000)) { ls.add(System.currentTimeMillis()); } if (col.contains(10000)) { ls.add(System.currentTimeMillis()); } if (col.contains(50000)) { ls.add(System.currentTimeMillis()); } if (col.contains(90000)) { ls.add(System.currentTimeMillis()); } statistics(ls);*/ /* 10 19 18 1 3 4 */ /*List<Integer> lst = list.stream().limit(1000000).collect(Collectors.toList()); ls.add(System.currentTimeMillis()); if (lst.stream().anyMatch(x->x.intValue()==100000)) { ls.add(System.currentTimeMillis()); } if (lst.stream().anyMatch(x->x.intValue()==500000)) { ls.add(System.currentTimeMillis()); } if (lst.stream().anyMatch(x->x.intValue()==900000)) { ls.add(System.currentTimeMillis()); } if (lst.contains(100000)) { ls.add(System.currentTimeMillis()); } if (lst.contains(500000)) { ls.add(System.currentTimeMillis()); } if (lst.contains(900000)) { ls.add(System.currentTimeMillis()); } statistics(ls);*/ /* 26 28 27 2 6 2 */ List<Integer> lst = list.stream().limit(10000000).collect(Collectors.toList()); ls.add(System.currentTimeMillis()); if (lst.stream().anyMatch(x->x.intValue()==1000000)) { ls.add(System.currentTimeMillis()); } if (lst.stream().anyMatch(x->x.intValue()==5000000)) { ls.add(System.currentTimeMillis()); } if (lst.stream().anyMatch(x->x.intValue()==9000000)) { ls.add(System.currentTimeMillis()); } if (lst.contains(1000000)) { ls.add(System.currentTimeMillis()); } if (lst.contains(5000000)) { ls.add(System.currentTimeMillis()); } if (lst.contains(9000000)) { ls.add(System.currentTimeMillis()); } statistics(ls); /** * 42 * 42 * 86 * 11 * 21 * 13 */ } private void statistics(List<Long> ls){ for (int i = 0; i < ls.size(); i++) { if (i>=1) { long l1 = ls.get(i) - ls.get(i - 1); System.out.println(l1); } } } }