将流的对象分组到Map中

时间:2018-05-29 16:36:11

标签: java set java-stream

我有一个具有一定马力量和一组hp intervalls的汽车流。 现在我需要将hp intervall存储在Map中的所有汽车中。

body {
  font-family: "Times New Roman", Times, serif;
  margin: 0px;
  padding: 0px;
  background: #434447;
}

#content {
  color: #eaeaea;
  text-align: center;
}

#list {
  display: flex;
}

#menu {
  padding: 10px;
  margin: 0px;
}

#menu li {
  list-style: none;
  width: 10em;
  display: inline-block;
  border-width: 1px;
  border-style: outset;
  border colour: black;
  padding: 3px 2px 3px 2px;
  color: #545456;
  background: #babbc1;
  text-decoration: none;
  text-align: center;
}

#menu a {
  color: #545456;
  background: #babbc1;
  text-decoration: none;
  text-align: center;
  display: block;
  cursor: pointer;
}

#menu li:hover {
  border-style: inset;
}

Map<hpIntervall, Set<car>> 类有一个HPIntervall和一个fromHP int,所以我可以使用toHP.getTo()来获取它们。

我已经尝试了.getFrom(),但我想我完全不了解语法。有人可以给我一个方法吗?

stream.collect(Collectors.groupBy())

1 个答案:

答案 0 :(得分:0)

我的用例并不清楚。但是这样的事情对你有用。不幸的是,我对课程hpIntervall没有任何想法。假设间隔是从fromHp到toHp导出的,那么解决方案将是这样的。

Map<Integer, Set<Car>> carsByHpInterval = cars.stream()
        .collect(Collectors.groupingBy(car -> car.getFromHP() - car.getToHP(), Collectors.toSet()));

<强>更新

假设HPIntervall为Car类中的一个字段,解决方案就是

final Map<HPIntervall, Set<Car>> carsByHpInterval = cars.stream()
        .collect(Collectors.groupingBy(Car::getHpIntervall, Collectors.toSet()));