私が行き詰まったポイントをできるだけ簡単に説明しようと思います。
基本的に、ユーザーデータを処理するソリューションを実装しようとしています。
<String, Object>
ユーザーIDをキーとして、ユーザーオブジェクトを値として保存する、のようなマップがあります。ユーザーオブジェクトには、場所、名前、年齢などのフィールドがあります。
マップを使用して、ユーザー データを分類するためのセットまたは他のマップが必要です。たとえば<String, Set<String>>
、同じ場所に住んでいるユーザーのセットを保存するような別のマップを取得しようとしています。
私はいくつかのトリックを試し、これやこれなどのいくつかのリンクをチェックしました。また、元に戻すための基本的なコードを実装しようとしました
Set<String> userid = new HashSet<String>();
Map<String, Set<String>> returnvalue = new HashMap<String, Set<String>>();
HashMap<String, String> userReason = convertForReason();
for (Entry<String, String> entry : userReason.entrySet()) {
userid.add(entry.getKey());
}
しかし、新しいマップを作成する方法に行き詰まっています<String. Set<String>>
。これを達成する方法はありますか? またはこの種の問題に対する他の解決策はありますか?
アップデート:
さて、ここに私が自分の質問のために見つけたものがあります:
Map> returnValue = new HashMap>(); HashSet reasonSet = new HashSet();
for(String userId : userData.keySet()){
UserObject obj = userData.get(userId);
String location = obj.getLocation();
String username = obj.getUserid();
if(returnValue.get(location)==null){
reasonSet = new HashSet<String>();
reasonSet.add(username);
returnValue.put(reason, reasonSet);
}else{
HashSet<String> tmp = returnValue.get(location);
tmp.add(username);
returnValue.put(location, tmp);
}
これを解決するための洞察とより良いアイデアを提供してくれたByterに感謝します:)サイズが大きくなりすぎた場合にパフォーマンスがどのように影響を受けるかはよくわかりません