package com.company;
import java.util.*;
import java.util.stream.Collectors;
import static java.util.Comparator.comparing;
import static java.util.stream.Collectors.collectingAndThen;
import static java.util.stream.Collectors.toCollection;
public class Main {
public static void main(String[] args) {
List<String>list =new ArrayList<String>();
list.add("b1");
list.add("b2");
list.add("b3");
Iterator<String> it =list.iterator();
while (it.hasNext()){
String data =it.next();
if (data.equals("b3")){
it.remove();
}
}
List<User> userList =new ArrayList<>();
User user1 =new User("1",2);
User user2 =new User("2",3);
User user3 =new User("2",3);
User user4 =new User("2",4);
userList.add(user1);
userList.add(user2);
userList.add(user3);
userList.add(user4);
HashMap a=new HashMap<>();
a.put("1",2);
a.put("1",2);
System.out.println(a);
List<User>collect1 =userList.stream().filter(item1->item1.getUsername()>1 &&item1.getUsername()==2).collect(Collectors.toList());
List<User>collect =userList.stream().filter(item ->!"2".equals(item.getUsername())).collect(Collectors.toList());
Set<Integer> test =userList.stream().map(User::getUsername).collect(Collectors.toSet());
List<User> unique1 = userList.stream().collect(
collectingAndThen(
toCollection(() -> new TreeSet<>(comparing(User::getUsername))), ArrayList::new));
List<User> collect2 = userList.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(o-> o.getUsername()+ ";" + o.getId()))),ArrayList::new));
userList.stream().map(User::getId).collect(Collectors.joining(","));
Map<String, User> studentMap = userList.stream().collect(Collectors.toMap(User::getId, s -> s, (s1, s2) -> s1));
Map<Integer, List<User>> classMap = userList.stream().collect(Collectors.groupingBy(User::getUsername));
Map<Integer, Map<String, List<User>>> prodMap= userList.stream().collect(Collectors.groupingBy(User::getUsername, Collectors.groupingBy(item -> {
if(item.getUsername() < 3) {
item.setId("1");
return "1";
}else {
return "other";
}
})));
Map<String, Long> pr = userList.stream().collect(Collectors.groupingBy(User::getId, Collectors.counting()));
Map<Integer, Integer> prg = userList.stream().collect(Collectors.groupingBy(User::getUsername, Collectors.summingInt(User::getUsername)));
Map<Integer, Set<Integer>> prag = userList.stream().collect(Collectors.groupingBy(User::getUsername, Collectors.mapping(User::getUsername, Collectors.toSet())));
System.out.println(collect);
System.out.println(prg);
System.out.println(pr);
System.out.println(prodMap);
System.out.println(classMap);
System.out.println(collect1);
System.out.println(test);
System.out.println(collect2);
System.out.println(unique1);
}
}