如何将一组字符与一个字符比较的地图进行比较?

时间:2010-07-20 10:12:07

标签: java

如果我有一组被称为字符且包含以下字符的字符(不必是SortedSet)

'c''h''a''r''a''c''t''e''r'

我有一个地图,其中有一组字符作为其键和字符串作为值,例如

map<Set<Character>>,<String> aMap = new HashMap<Set<Character>>,<String>();

aMap.put('a''h''t', "hat");
aMap.put('o''g''d', "dog");
aMap.put('c''r''a''t''e', "react");

我将使用什么javdoc方法来比较字符,因为它们都在Set中,然后使用for循环遍历keySet来比较字符以仅查找由包含在字符中的字符组成的键。第一。所以在上面的例子中,第二个条目('o''g''d',“dog”)将被省略。

感谢

和j

2 个答案:

答案 0 :(得分:1)

获得与你的set调用map.keySet()相似的东西

public class SetTest {
    public static void main(String[] args) {

        Set<Character> set = new HashSet<Character>();
        HashMap<Character, String> map = new HashMap<Character, String>();
        for (char c : "Character".toCharArray()) {
            set.add(c);
            map.put(c, "some value");
        }
        System.out.println( set + " == " + map.keySet() + set.containsAll( map.keySet() ));
        set.remove('C');
        System.out.println( set + " == " + map.keySet() + set.containsAll( map.keySet() ));
    }
}


[e, t, c, r, a, C, h] == [e, t, c, r, a, C, h]true
[e, t, c, r, a, h] == [e, t, c, r, a, C, h]false

答案 1 :(得分:0)

只需使用set.containsAll(...) 示例:如果集合具有相同的大小且firstSet.containsAll(secondSet)为true,则2个集合相同。