import lombok.Data;
@Data
public class Transaction {
private Long id;
private String type;
private BigDecimal value;
}
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
import org.junit.Test;
public class Java8StreamTest {
@Test
public void test() {
List<Transaction> transactionList = new ArrayList<Transaction>();
List<Long> transactionIdList = transactionList.parallelStream()
.filter(t -> t.getType().equals("grocery"))
.sorted(Comparator.comparing(Transaction::getValue).reversed())
.map(Transaction::getId)
.collect(Collectors.toList())
;
System.out.println(transactionIdList);
transactionList.forEach(System.out::println);
transactionList.forEach(item -> {
System.out.println(item);
});
IntStream.of(new int[]{1, 2, 3}).forEach(System.out::println);
Map<Long, BigDecimal> transactionIdValueMap = transactionList.stream().collect(Collectors.toMap(Transaction::getId, Transaction::getValue));
Map<String, List<Transaction>> transactionTypeListMap = transactionList.stream().collect(Collectors.groupingBy(Transaction::getType));
List<Transaction> transactionList2 = transactionIdValueMap.entrySet().stream().map(entry -> {
Transaction transaction = new Transaction();
transaction.setId(entry.getKey());
transaction.setValue(entry.getValue());
return transaction;
}).collect(Collectors.toList());
List<Entry<Long, BigDecimal>> transactionIdValueMapAfterSorted = transactionIdValueMap.entrySet().stream().sorted((o1, o2) -> o2.getValue().compareTo(o1.getValue())).collect(Collectors.toList());
BigDecimal transactionValueSum = transactionIdValueMap.values().stream().reduce(BigDecimal.ZERO, BigDecimal::add);
}
}