私のコードを実行しながらこんにちは、私はエラーを取得しています:地図へのJava 8リスト<V><K, V>オーバーライド重複キー
java.lang.IllegalStateException: Duplicate key [email protected]
at java.util.stream.Collectors.lambda$throwingMerger$0(Collectors.java:133)
at java.util.HashMap.merge(HashMap.java:1253)
at java.util.stream.Collectors.lambda$toMap$58(Collectors.java:1320)
at java.util.stream.ReduceOps$3ReducingSink.accept(ReduceOps.java:169)
at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)
at ad.ecs.core.scriptengine.Utils.getInterfaceIDsWithSiteIDAndNPI(Utils.java:689)
私はマップにグループに私のリストをアップしようとしている:
public static Map<Integer, SiteIDAndNPI> getInterfaceIDsWithSiteIDAndNPI(Session session) {
@SuppressWarnings("unchecked")
List<Srvsetup> srvsetups = session.createCriteria(Srvsetup.class)
.add(Restrictions.gt("scriptinterfaceid", 0))
.list();
Map<Integer, SiteIDAndNPI> interfaceIDs = srvsetups.stream()
.collect(Collectors.toMap(srv -> srv.getScriptinterfaceid(),
srv -> getSiteIDAndNPI(srv.getId().getSiteid(), session)));
@SuppressWarnings("unchecked")
List<Facsetup> facsetups = session.createCriteria(Facsetup.class)
.add(Restrictions.gt("scriptinterfaceid", 0))
.list();
interfaceIDs.putAll(facsetups.stream()
.collect(Collectors.toMap(fac -> fac.getScriptinterfaceid(),
fac -> getSiteIDAndNPI(fac.getPlid(), session))));
return interfaceIDs;
}
public static SiteIDAndNPI getSiteIDAndNPI(int siteID, Session session) {
SiteIDAndNPI siteIDAndNPI = new SiteIDAndNPI();
siteIDAndNPI.setSiteID(siteID);
Mdsetup1 mdsetup1 = (Mdsetup1) session.get(Mdsetup1.class, siteID);
if (mdsetup1 != null)
siteIDAndNPI.setNPI(mdsetup1.getProviderId());
return siteIDAndNPI;
}
に
私はこのリンクを見ました:Java 8 List<V> into Map<K, V>
そこにグループを使用するための提案があります。しかし、私はこのようなマップを得たくないです:
Map<Integer, List<SiteIDAndNPI>>
代わりに重複するキーを無効にしたいと思います。それはいくつかの醜いコードを実行せずに達成可能ですか?