Java 在HashMap的值中查找重复项 私有HashMap ID_标记; 私有HashMap标签\u ID; 私有HashMap标签\u翻译; 私有最终ArrayList包含列表; 私人最终ArrayList排除列表; 公共复制查找器(HashMap id_标记、HashMap标记_翻译、ArrayList排除列表、ArrayList包含列表){ this.ID_TAGS=ID_TAGS; this.TAGS\u TRANSLATIONS=TAGS\u TRANSLATIONS; this.INCLUSIONLIST=INCLUSIONLIST; this.ExclutionList=排除列表; TAGS_ID=newhashmap(); 对于(条目e:ID\u TAGS.entrySet()){ 标签ID.put(e.getValue(),e.getKey()); } } /** *找到你的双份身份证。 *@返回 */ 公共集findDuplicates(){ Set duplicates=newlinkedhashset(); 对于(条目e:ID\u TAGS.entrySet()){ HashMap cloneWithoutTag=新HashMap(标记和翻译); int id=e.getKey(); 字符串标记=e.getValue(); cloneWithoutTag。删除(标记); if(cloneWithoutTag.containsValue(TAGS\u TRANSLATIONS.get(tag))){ 副本。添加(id); } } 副本。添加所有(排除列表); 重复。移除所有(包含列表); 迭代器nextD=duplicates.Iterator(); while(nextD.hasNext()){ System.out.println(查找(ID_TAGS.get(nextD.next())); } 返回副本; } 公共字符串查找(字符串标记){ 返回标记\u TRANSLATIONS.get(标记); } 公共int getID(字符串标记){ 返回标签\u ID.get(标签); }

Java 在HashMap的值中查找重复项 私有HashMap ID_标记; 私有HashMap标签\u ID; 私有HashMap标签\u翻译; 私有最终ArrayList包含列表; 私人最终ArrayList排除列表; 公共复制查找器(HashMap id_标记、HashMap标记_翻译、ArrayList排除列表、ArrayList包含列表){ this.ID_TAGS=ID_TAGS; this.TAGS\u TRANSLATIONS=TAGS\u TRANSLATIONS; this.INCLUSIONLIST=INCLUSIONLIST; this.ExclutionList=排除列表; TAGS_ID=newhashmap(); 对于(条目e:ID\u TAGS.entrySet()){ 标签ID.put(e.getValue(),e.getKey()); } } /** *找到你的双份身份证。 *@返回 */ 公共集findDuplicates(){ Set duplicates=newlinkedhashset(); 对于(条目e:ID\u TAGS.entrySet()){ HashMap cloneWithoutTag=新HashMap(标记和翻译); int id=e.getKey(); 字符串标记=e.getValue(); cloneWithoutTag。删除(标记); if(cloneWithoutTag.containsValue(TAGS\u TRANSLATIONS.get(tag))){ 副本。添加(id); } } 副本。添加所有(排除列表); 重复。移除所有(包含列表); 迭代器nextD=duplicates.Iterator(); while(nextD.hasNext()){ System.out.println(查找(ID_TAGS.get(nextD.next())); } 返回副本; } 公共字符串查找(字符串标记){ 返回标记\u TRANSLATIONS.get(标记); } 公共int getID(字符串标记){ 返回标签\u ID.get(标签); },java,collections,hashmap,contains,Java,Collections,Hashmap,Contains,} 我不知道是否有人能帮我。我将尝试在TAGS\u TRANSLATIONS-HashMap中找到一些具有相同值的键。我的想法是,当选择的键不在地图的克隆中时,您可以查看相同的值是否仍在其中。到目前为止,它仍在工作,但我有一个问题,一些值,如“Meeting”只在其中出现一次,并且也在输出中出现。现在我将尝试查找错误。提前感谢您的帮助:)假设您有以下地图: private HashMap <Integer, String> ID_TAGS; private HashMap &

}


我不知道是否有人能帮我。我将尝试在TAGS\u TRANSLATIONS-HashMap中找到一些具有相同值的键。我的想法是,当选择的键不在地图的克隆中时,您可以查看相同的值是否仍在其中。到目前为止,它仍在工作,但我有一个问题,一些值,如“Meeting”只在其中出现一次,并且也在输出中出现。现在我将尝试查找错误。提前感谢您的帮助:)

假设您有以下地图:

private HashMap <Integer, String> ID_TAGS;
    private HashMap <String, Integer> TAGS_ID;
    private HashMap <String, String> TAGS_TRANSLATIONS;
    private final ArrayList <Integer> INCLUSIONLIST;
    private final ArrayList <Integer> EXCLUSIONLIST;



public DuplicationFinder(HashMap <Integer, String> id_tags, HashMap <String, String> tags_translations, ArrayList <Integer> exclusionList, ArrayList <Integer> inclusionList) {
    this.ID_TAGS = id_tags;
    this.TAGS_TRANSLATIONS = tags_translations;
    this.INCLUSIONLIST = inclusionList;
    this.EXCLUSIONLIST = exclusionList;
    TAGS_ID = new HashMap <>();
    for(Entry <Integer, String> e : ID_TAGS.entrySet()){
        TAGS_ID.put(e.getValue(), e.getKey());
    }
}
/**
 * Findet die Duplikate und gibt die ID's zurück.
 * @return
 */
public Set <Integer> findDuplicates(){
    Set <Integer> duplicates = new LinkedHashSet <>();
    for(Entry <Integer, String> e : ID_TAGS.entrySet()) {
        HashMap <String, String> cloneWithoutTag= new HashMap <>(TAGS_TRANSLATIONS);
        int id = e.getKey();
        String tag = e.getValue();
        cloneWithoutTag.remove(tag);
        if(cloneWithoutTag.containsValue(TAGS_TRANSLATIONS.get(tag))) {
            duplicates.add(id);
        }
    }
    duplicates.addAll(EXCLUSIONLIST);
    duplicates.removeAll(INCLUSIONLIST);
    Iterator<Integer> nextD = duplicates.iterator();
    while(nextD.hasNext()) {
        System.out.println(lookUp(ID_TAGS.get(nextD.next())));
    }
    return duplicates;
}

public String lookUp(String tag) {
    return TAGS_TRANSLATIONS.get(tag);
}

public int getID(String tag) {
    return TAGS_ID.get(tag);
}

请注意,此代码将涉及每个重复翻译,但由于我们将重复翻译存储在一个集合中,因此给定的重复翻译应该在最终结果中只出现一次。

您的代码实际上是做什么的?你把这件事推给我们,然后让我们来解决。是的,这就是我试图解释的,我有HashMap,这些标签指的是一个标签,我在另一个HasMap中实现了这个标签。现在,我将尝试在翻译中查找重复项,并希望将ID添加到重复集。但是我有大约10个副本,不是没有副本。我试图在下面给出一个答案,因为你上面的评论足够清楚地说明了你想问什么。为了将来的参考,请提出更清楚的问题。谢谢你的回答,我用了一种稍微不同的方式。我现在使用了一个包装器类,这使得这非常简单。问题是我比较了来自两个数据库的数据,有些标签具有相同的ID,所以这里的问题是集合。
Map<Tags, Translation> someMap;
Collection<Translation> translations = someMap.values();
Set<Translation> dupeSet = new HashSet<>();

for (Translation t : translations) {
    if (Collections.frequency(translations, t) > 1) {
        dupeSet.add(t);
    }
}