2016-04-11 6 views
0

を使用して:変換アレイリストに - >マップ、私は以下のgetCardValueCountMap法で作成したようなマップを作成するためにJava 8つのストリームを使用する方法を把握しようとしてきたのjava 8

public class Hand { 
     private final List<Card> hand = new ArrayList<>(); 
     ..... 
     public Map<CardValue, Integer> getCardValueCountMap(){ 
      HashMap<CardValue, Integer> cardValueCountMap = new HashMap<>(); 
      for (Card card : hand) { 
       final CardValue value = card.getValue(); 
       Integer count = cardValueCountMap.get(value); 
       if (count == null){ 
        cardValueCountMap.put(value, 1); 
       } else { 
        cardValueCountMap.put(value, count + 1); 
       } 
      } 
      return cardValueCountMap; 
     } 
.... 
} 
+0

コードはすでにJava 8です...ストリームを使用することを意味しますか? –

+1

_私は試していました_ ...彼らは何を試してみたのか分かりません。 _do-my-work-for-me_のような匂いがする。 – Savior

+0

右側の[関連]タブに5つの重複があります。 – Savior

答えて

1

これにはありませんストリームを使用するので、本当にあなたの質問に対する答えではありませんが、私の意見では、これを行う最もきれいな方法は、Mapインターフェイスの改善を利用することです。

HashMap<CardValue, Integer> map = new HashMap<>(); 
for (Card card : hand) 
    map.merge(card.getValue(), 1, Integer::sum); 
+1

私はそれが好きです。代わりのもの: 'hand.stream()。collect(toMap(Card :: getValue、c - > 1、Integer :: sum)); ()))); '。 – Tunaki

関連する問題