2010-07-20 46 views
2

如果我有一组被称为字符和包含下列字符的字符(不必是SortedSet的)如何比较一组字符与地图哪些键是字符?

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

和我有一个地图,其具有套charcters作为其键和字符串作为的例如值

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方法来比较的人物,因为他们都在一个组,然后用一个for循环比较字符只查找由密钥通过密钥集迭代来自第一个包含的字符。所以在上面的例子中,第二项('o''g''d',“狗”)将被省略。

感谢

安迪

+0

使用代码格式化工具,请格式化你的问题,解释问题的更好。您想做什么?你能用预期的结果写下一些例子吗? – pakore 2010-07-20 10:16:11

+0

你能否详细解释一下,为什么第二项应该省略?因为它包含来自“字符”的** no **字母,或者因为它们中没有字母被包含在“字符”中? – Groo 2010-07-20 10:23:42

+0

当比较的第二项没有任何与第一组相同的字符(即字符没有'd','o'或'g') – user386537 2010-07-20 11:21:15

回答

0

只是set.containsAll(...)玩。
示例:如果sets的大小相同并且firstSet.containsAll(secondSet)为true,则2组相同。

+0

大小无关紧要:如果此集合包含所有的指定集合的​​元素。如果指定的集合也是一个集合,则此方法返回true,如果它是此集合的子集。请参阅http://download.oracle.com/docs/cd/E17409_01/javase/6/docs/api/java/util/Set.html#containsAll%28java.util.Collection%29 – Redlab 2010-07-20 10:25:50

+0

我已经讲了2套相同。如果其中一个是另一个的子集,并且它们具有不同的大小 - 并不相同。不过,也许我误解了作者的任务。 – foret 2010-07-20 10:29:15

1

要得到的东西比得上你的集合调用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