public class Run {
public static void main(String[] args) {
// 造一波数据
List<Profit> profits = new ArrayList<>();
profits.add(new Profit(1L,"COST",100L,200L));
profits.add(new Profit(2L,"COST",101L,200L));
profits.add(new Profit(3L,"COST",102L,200L));
profits.add(new Profit(4L,"STORE",100L,200L));
profits.add(new Profit(5L,"STORE",101L,200L));
profits.add(new Profit(6L,"STORE",102L,200L));
// 流的写法
Map<Long,List<Profit>> streamListMap = profits.stream().collect(Collectors.groupingBy(Profit::getItemId));
System.out.println(streamListMap);
// for循环的写法
Map<Long,List<Profit>> forListMap = new HashMap<>();
for(Profit profit : profits) {
forListMap.computeIfAbsent(profit.getItemId(),o->new ArrayList<Profit>()).add(profit);
}
System.out.println(forListMap);
}
}
public class Profit {
private Long id;
private String type;
private Long itemId;
private Long gain;
public Profit() {
}
public Profit(Long id, String type, Long itemId, Long gain) {
this.id = id;
this.type = type;
this.itemId = itemId;
this.gain = gain;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public Long getItemId() {
return itemId;
}
public void setItemId(Long itemId) {
this.itemId = itemId;
}
public Long getGain() {
return gain;
}
public void setGain(Long gain) {
this.gain = gain;
}
@Override
public String toString() {
return "Profit{" +
"id=" + id +
", type='" + type + '\'' +
", itemId=" + itemId +
", gain=" + gain +
'}';
}
}