我想学习如何使用Java 8语法与流,并有点卡住.
当你为每个值都有一个键时,很容易分组.但是如果我为每个值都有一个键列表并且仍然想用groupingBy对它们进行分类呢?我是否必须将其分解为多个语句,或者可能有一些流魔术可以使其更简单.
这是基本代码:
List<Album> albums = new ArrayList<>();
Map<Artist, List<Album>> map = albums.stream().collect(Collectors.groupingBy(this::getArtist));
Run Code Online (Sandbox Code Playgroud)
如果每个专辑只有一个艺术家,那么效果很好.但我必须返回一个列表,因为专辑可以有很多艺术家.专辑和艺术家当然用于说明,我有真实世界的类型..
可能有一个简单的解决方案,但我有一段时间没有找到它,所以我呼吁这个网站代表的集体大脑来解决它.:)如果不存在简单的解决方案,也欢迎使用复杂的解决方案.
在Album类中或作为以Album作为参数的实用程序方法:
Artist getArtist(); // ok
List<Artist> getArtist(); // Not ok, since we now have many "keys" for every Album
Run Code Online (Sandbox Code Playgroud)
干杯,Mikael Grev
我正在尝试制作一个较小版本的 ComboBox,但无论我做什么,文本和箭头按钮之间的差距都是恒定的。
如果我使用css:
.combo-box-base > *.arrow-button {
-fx-padding: 0 0 0 0;
-fx-background-color: pink, pink, pink, pink;
}
Run Code Online (Sandbox Code Playgroud)
箭头按钮变小了,但 ComboBox 本身仍然具有相同的大小,只是增加了箭头和文本之间的间隙以进行补偿。
如果我做
.combo-box > .list-cell {
-fx-padding: 0 0 0 0;
-fx-border-insets: 0 0 0 0;
}
Run Code Online (Sandbox Code Playgroud)
组合获得较小的高度,但宽度保持固定。
有没有办法通过减小文本和箭头之间的大小来使组合的首选大小更小?