/**
* Created by jiyang on 17:06 2017/12/20
*/
public class Lambda {
public static void main(String[] args) {
List<String> list = Lists.newArrayList();
list.add("d");
list.add("a");
list.add("b");
list.add("c");
HashMap<String, String> map = Maps.newHashMap();
map.put("1", "a");
map.put("2", "b");
map.put("3", "c");
List<User> listUser = Lists.newArrayList();
listUser.add(new User("zhangsan", "11"));
listUser.add(new User("lisi", "22"));
// 遍历list
list.forEach((v) -> System.out.println(v));
System.out.println("------------------------------------");
// 遍历map
map.forEach((k, v) -> System.out.println(k + ":" + v));
System.out.println("------------------------------------");
// stream filter()用于过滤,即使原stream中满足条件的元素构成新的stream:
List filter = list.stream().filter(s -> s.equals("1")).collect(Collectors.toList());
filter.forEach(s -> System.out.println(s));
System.out.println("------------------------------------");
// stream map()用于映射,遍历原stream中的元素,转换后构成新的stream:
List<String> listUp = list.stream().map(String::toUpperCase).collect(Collectors.toList());
listUp.forEach(s -> System.out.println(s));
System.out.println("------------------------------------");
// stream map()
List<String> names = listUser.stream().map(User::getName).collect(Collectors.toList());
names.forEach(v -> System.out.println(v));
System.out.println("------------------------------------");
// stream sorted() 排序
List<String> sortList = list.stream().sorted().collect(Collectors.toList());
sortList.forEach(v -> System.out.println(v));
System.out.println("------------------------------------");
// stream limit()
sortList = list.stream().sorted().limit(3).collect(Collectors.toList());
sortList.forEach(v -> System.out.println(v));
System.out.println("------------------------------------");
// stream skip()
sortList = list.stream().sorted().skip(1).limit(3).collect(Collectors.toList());
sortList.forEach(v -> System.out.println(v));
System.out.println("------------------------------------");
// stream count()
long count = list.stream().filter(s -> s.equals("a")).count();
System.out.println(count);
System.out.println("------------------------------------");
/ array 转storm
String[] array = {"a", "a", "c", "d"};
List<String> a = Arrays.stream(array).filter(v -> v.equals("a")).limit(2).collect(Collectors.toList());
a.forEach(v -> System.out.println(v));
System.out.println("------------------------------------");
// stream findFirst
Optional<String> optional = Arrays.stream(array).filter(v -> !v.equals("a")).findFirst();
System.out.println(optional.get());
System.out.println("------------------------------------");
// stream of
//String[] cacheNames = {};
//Stream.of(cacheNames).forEach(cacheName -> expireMap.put(cacheName, finalExpireAfter));
// stream filter、sorted、map、limit、collect
listUser.stream().filter(u -> u.getName() == "username")
.sorted(Comparator.comparing(User::getName).reversed())
.map(User::getPassword)
.limit(2)
.collect(Collectors.toList());
// distinct 返回没有重复元素的stream
//skip(n): 返回一个忽略前n个的stream
// anyMatch, allMatch, noneMatch
boolean anyMatch = listUser.stream().allMatch(u -> u.getName().equals("111"));
// findFirst和findAny,可以从Stream中获取任意元素,返回Optional对象
Optional<User> optionalUser = listUser.stream().filter(u -> u.getName().equals("aaa")).findFirst();
User opUser = optionalUser.get();
// Optional<T>类可以存放一个存在或者不存在的值。在下面代码中,findAny可能没有返回一个交易类型是grocery类的信息。
// Optional存在好多方法检测元素是否存在。比如,如果一个交易信息存在,我们可以使用相关函数处理optional对象。
Optional<User> opUsers = listUser.stream().filter(u -> u.getName().equals("aaa")).findAny();
// 数值计算reduce
List<Integer> intArray = Arrays.asList(1, 2, 3, 4, 5);
int sum = intArray.stream().reduce(0, (ab, cd) -> ab + cd);
}
}
java8 Lambda
最新推荐文章于 2024-06-25 05:01:25 发布