前提・実現したいこと
Mapのvalueの値が50未満のgradeのみ.filterで取り出しその後.forEachを用いて取り出されたgradeのkeyとvalueを表示したい
発生している問題・エラーメッセージ
Exception
1 at mainStream.lambda$0(mainStream.java:15) 2 at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:174) 3 at java.util.HashMap$EntrySpliterator.forEachRemaining(HashMap.java:1699) 4 at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481) 5 at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471) 6 at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151) 7 at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174) 8 at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) 9 at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418) 10 at mainStream.main(mainStream.java:15) 11 12エラーメッセージ
該当のソースコード
JAVA
1ソースコード 2```import java.util.HashMap; 3import java.util.Map; 4 5public class mainStream { 6 7 public static void main(String[] args) { 8 Map<String,Integer>grade=new HashMap<>(); 9 10 grade.put("Tom", 100); 11 grade.put("Bob", 50); 12 grade.put("John", 20); 13 14 grade.entrySet().stream() 15 .filter(e->grade.get(e)<50).forEach(System.out::println); 16 } 17 18} 19 20### 試したこと 21eclipsの解決策に従って進めた。 22 23### 補足情報(FW/ツールのバージョンなど) 24 25Mapという機能はkeyとvalueを別で考えることはできないのでしょうか。 26今回、Stream APIという機能を使ってみたくこのようなプログラムを作成しようと考えたのですが、if文を利用した場合も一時的にvalueの値のみでgradeを比較するということはできないのでしょうか。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/06/03 09:32