我想學習如何使用流的Java 8語法和有一點卡住的分組。的Java 8從一到多
這是很容易groupingBy當你擁有的每一個值一個關鍵。但是如果我爲每個值都有一個鍵列表並且仍然想用groupingBy對它們進行分類呢?我是否必須將其分成幾個陳述,或者是否有可能做一點小流魔術來使其更簡單。
這是基本的代碼:
List<Album> albums = new ArrayList<>();
Map<Artist, List<Album>> map = albums.stream().collect(Collectors.groupingBy(this::getArtist));
它的偉大工程,如果只有一個爲每張專輯的藝術家。但是我必須返回一個列表,因爲一個專輯可以有許多藝術家。專輯和藝術家用於課程的說明,我有真實世界的類型..
有可能是一個簡單的解決方案,但我還沒有發現它在一段時間,所以我呼籲集體大腦這個網站代表瞭解決這個問題。 :)如果不存在簡單的解決方案,也歡迎提供複雜的解決方案。
在Album類或者接受一個相冊作爲參數的實用方法:
Artist getArtist(); // ok
List<Artist> getArtist(); // Not ok, since we now have many "keys" for every Album
乾杯, 的Mikael GREV
......有可能是一個簡單的解決方案:「羣星」 ;-) – mcalex