【发布时间】:2020-10-15 03:15:42
【问题描述】:
FundingRank 和 SourceBucket 是枚举,但本质上是 int
enum FundingRank {
LESS_THAN_0(0),
LESS_THAN_1(1),
LESS_THAN_100(100);
private final int rank;
FundingRank(int i) {
this.rank = i;
}
}
enum ScoreBucket {
MORE_THAN_1000(1000),
MORE_THAN_500(1000),
MORE_THAN_100(100),
MORE_THAN_10(10);
private final int bucket;
ScoreBucket(int i) {
this.bucket = i;
}
}
我有一个 TreeMap<FundingRank, TreeMap<scoreBucket, List<Kids>> > 持有类似的数据
fundingRank scoreBucket List<Kids>
0 1000 List(with 1 elements)
500 List(with 2 elements)
100 List(with 4 elements)
10 List(with 3 elements)
1 1000 List(with 4 elements)
500 List(with 7 elements)
100 List(with 4 elements)
10 List(with 3 elements)
现在,我想找到最少有 5 个孩子的元素最小 fundingRank 和最大 scoreBucket,如果不是,那么最小 fundingRank 和最大 scoreBucket
myMap.entrySet().stream()
.filter(e -> e.getvalue().entryset().stream()
.filter(e2 ->e2.getvalue().size()).findfirst();
Output sorted map like this:
1 500 List(with 7 elements)
0 100 List(with 4 elements)
1 1000 List(with 4 elements)
1 100 List(with 4 elements)
0 10 List(with 3 elements)
...
所以,我正在尝试对 TreeMap
【问题讨论】:
-
你能举一些例子来说明你想在这里实现什么吗?
-
不明白你想要什么结果?并且至少 5 个孩子意味着总结一个 fundRank 的所有孩子?
-
List<Kids>是 nestedTreeMap<Key2, List<Kids>>中的值类型,我认为 OP 的意思是List<Kids>.size() >= 5。MyKey似乎是fundingRank,一个Integer,而Key2似乎是scoreBucket,另一个Integer。然后我可能会完全离开,OP应该edit他们的问题并添加更多细节和清晰度。 -
您的示例排序顺序与您的文本不匹配
-
@fps 目标:想要找到 [fundingRank, scoreBucket, list_Kids] 三元组的最小资金和最大分数,但前提是孩子的列表有超过 5 个元素,但如果没有ScoringBucket 有 >=5 个孩子,而不仅仅是返回 minFundingBucket 和 max ScoreBucket 以及相应的孩子列表
标签: java java-stream grouping treemap collectors