我有一個Java的hashmap用於軟件系統的retreaving APIs。所以,我有這樣的事情:如何在Hashmap中刪除重複的Key-Value對? - 不只是重複密鑰或值
[SoftwareID,SoftwareAPI]
當我詢問軟件系統所有的API,我得到:
[SoftwareID,SoftwareAPI] ,[SoftwareID,SoftwareAPI],[SoftwareID,SoftwareAPI]]
但我有一個問題,我需要刪除所有重複SoftwareAPI每個軟件。
例如,當我重複了我的HashMap中我得到的,
[ [0, A], [0, B], [0, A], [0, A] ];
[ [1, A], [1, B], [1, B], [1, C] ];
[ [2, A], [2, B], [2, A] ];
,但我需要刪除重複的對,所以這將是這樣的:
[ [0, A], [0, B] ];
[ [1, A], [1, B], [1, C] ];
[ [2, A], [2, B] ]
只是添加一些代碼這裏的信息是代碼的一部分:
// HashMap APIs per user/Systems
HashMap<Integer, Set<API>> apisPerSystem = new HashMap<Integer, Set<API>>();
/**
* Stores a API in the data model
* @param system the user
* @param api the item
* @return the newly added API
*/
public API addAPIs(int system, String api) {
API r = new API(system,api);
apis.add(r);
Set<API> systemApis = apisPerUser.get(system);
if (systemApis == null) {
systemApis = new HashSet<API>();
}
apisPerUser.put(system, systemApis);
systemApis.add(r);
systems.add(system);
apisList.add(api);
return r;
}
// Get the APIs per Systemfrom the outside.
public HashMap<Integer, Set<API>> getAPIsPerSystem() {
return apisPerSystem;
}
如果可能的話,你應該使用番石榴的[Multimap之(http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/collect/Multimap.html )這正是你想要實現的。關於實現的建議仍然使用Multimap。 – wonderb0lt