package cn.tencent.data.ext.service.handler.common.util;
import cn.tencent.data.ext.vo.User;
import java.util.*;
import java.util.stream.Collectors;
import static java.util.Comparator.comparingLong;
import static java.util.stream.Collectors.collectingAndThen;
import static java.util.stream.Collectors.toCollection;
public class test {
public static void main(String[] args) {
List<User> list = new ArrayList<>();
list.add(new User(21L, "张三"));
list.add(new User(25L, "李四"));
list.add(new User(22L, "王五"));
list.add(new User(19L, "赵柳"));
list.add(new User(32L, "王5"));
list.add(new User(29L, "王6"));
list.add(new User(21L, "王7"));
list.add(new User(21L, "王7"));
System.out.println("-------------------对象根据年龄属性升序排序----------------------");
List<User> newList = list.stream().sorted(Comparator.comparing(User::getAge)).collect(Collectors.toList());
newList.forEach(
s->System.out.println("姓名:" + s.getName() + " " + "年龄:" + s.getAge())
);
System.out.println("------------------对象根据年龄属性降序排序-----------------------");
List<User> newList1 = list.stream().sorted(Comparator.comparing(User::getAge).reversed()).collect(Collectors.toList());
newList1.forEach(
s->System.out.println("姓名:" + s.getName() + " " + "年龄:" + s.getAge())
);
System.out.println("------------------提取对象属性生成list-----------------------");
List<Long> ids = list.stream().map(User::getAge).collect(Collectors.toList());
System.out.println(ids);
System.out.println("------------------list升序排序-----------------------");
Collections.sort(ids);
System.out.println(ids);
System.out.println("------------------list倒序排序-----------------------");
ids.sort(Comparator.reverseOrder());
System.out.println(ids);
System.out.println("------------------过滤出符合条件的数据-----------------------");
List<User> newList2 = list.stream().filter(o->!o.getAge().equals(32L)).collect(Collectors.toList());
newList2.forEach(o->System.out.println(o.getAge()));
System.out.println("-------------------去重----------------------");
list = list.stream().collect(collectingAndThen(toCollection(()->new TreeSet<>(comparingLong(User::getAge))),ArrayList::new));
list.forEach(User->System.out.print(User));
System.out.println("------------------user-----------------------");
list.stream().distinct().forEach(s->System.out.println("姓名:" + s.getName() + " " + "年龄:" + s.getAge()) );
System.out.println("-----------------去重------------------------");
List<String> list2 = Arrays.asList("Geeks", "for", "Geeks",
"GeeksQuiz", "for", "GeeksforGeeks","GeeksforGeeks");
list2.stream().distinct().forEach(System.out::println);
/**
* List -> Map
* 需要注意的是:toMap 如果集合对象有重复的key,会报错Duplicate key ....
* apple1,apple12的id都为1。可以用 (k1,k2)->k1 来设置,如果有重复的key,则保留key1,舍弃key2
*/
System.out.println("-----------------List -> Map------------------------");
Map<Long, User> userMap = list.stream().collect(Collectors.toMap(User::getAge, a -> a, (k1, k2) -> k1));
System.out.println(userMap);
System.out.println("-----------------Map遍历------------------------");
Map<String, String> map = new HashMap<>();
map.put("name1", "刘德华");
map.put("name2", "黎明");
map.put("name3", "张学友");
map.put("name4", "郭富城");
map.forEach((key,value) -> {
System.out.println(key + "=" + value);
});
System.out.println("-----------------Map中按key移除值------------------------");
System.out.println(map);
for (String s : map.keySet()) {
if (s == "name1") {
map.remove("name1");
}
}
System.out.println(map);
System.out.println("-----------------Map中按value移除值------------------------");
Collection<String> collect = map.values();
System.out.println(map);
if (collect.contains("郭富城") == true) {
collect.remove("郭富城");
}
System.out.println(map);
}
}
package cn.tencent.data.ext.vo;
public class User {
private Long age;
private String name;
public User(Long age, String name) {
this.age = age;
this.name = name;
}
public Long getAge() {
return age;
}
public void setAge(Long age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}