m.put("A", al);
m.put("B", al1);
m.put("C", al2);
我想比较这个HashMap的所有值。这是具有String
类型键和ArrayList<Integer>
类型值的HashMap。
我不想使用其他集合类型。
Integer a[] = { 1, 2, 3, 4 };
Integer b[] = { 1, 2, 3, 4 };
Integer c[] = { 9, 5, 3, 7 };
Integer d[] = { 1, 2, 3, 2};
List<Integer> l = Arrays.asList(a);
List<Integer> m = Arrays.asList(b);
List<Integer> n = Arrays.asList(c);
List<Integer> o = Arrays.asList(d);
Map<String, List<Integer>> m1 = new HashMap<String, List<Integer>();
m1.put("A", l);
m1.put("B", m);
m1.put("C", n);
m1.put("D", o);
这是我的hashmap m1,每个键都有一个ElementList元素,因为我们知道键“A”和键“B”都有相同的元素 A- {1,2,3,4}和B- {1,2,3,4}以及其他其他键具有不同的不同元素。所以我想要的是,获得所有的钥匙 相同的元素。例如,键A和键B都具有相同的元素,因此我想打印A和B.并且所有键的大小应相同 所有hasmap键的大小都是4
答案 0 :(得分:0)
如果你使用一个hashmap,你就没有办法让你有两个重复 - 如果你正确使用它,那就是。
例如,让我们使用你的例子。
HashMap<String, myClass> hash = new HashMap<String, myClass>();
myClass al = new myClass();
myClass al1 = new myClass();
myClass al2 = new myClass();
我们有两种方法可以从这里开始。一,是你在做什么。
hash.put("A", al);
hash.put("B", al1);
hash.put("C", al2);
看起来完美无瑕,但如果我现在这样做会怎么样?
hash.put("D", al);
这可以很好地工作,但这不是你应该如何使用它。正确使用散列映射的最基本方法如下:
hash.put(al.toString(), al);
hash.put(al1.toString(), al1);
hash.put(al2.toString(), al2);
即使您没有在类中重新定义toString()
方法,您也会获得该特定实例的唯一标识符。 al.toString()
和al1.toString()
不会返回相同的值,因为它取决于实例。
现在你也可以@Override
方法让它返回你想要的任何字符串。
但是,无需搜索重复值。如果您正确使用了散列图,那么地图本身就会为您完成。
答案 1 :(得分:0)
Map<String, ArrayList<Integer>> m= new HashMap<String, ArrayList<Integer>>();
ArrayList<Integer> al = new ArrayList<Integer>();
ArrayList<Integer> al1 = new ArrayList<Integer>();
ArrayList<Integer> al2 = new ArrayList<Integer>();
ArrayList<ArrayList<Integer>> all= new ArrayList<ArrayList<Integer>>();
ArrayList<String> all1= new ArrayList<String>();
al.add(1);al.add(2);al.add(3);al.add(4);al1.add(1);
al1.add(2);al1.add(3);al2.add(1);
al2.add(2);al2.add(3);al2.add(4);
m.put("A", al);m.put("B", al1);m.put("C", al2);
Map<String, ArrayList<Integer>> map = new HashMap<String, ArrayList<Integer>>();
Map<String, ArrayList<Integer>> map1 = new HashMap<String, ArrayList<Integer>>();
map.putAll(m);
for(Entry<String, ArrayList<Integer>> entry : m.entrySet())
{
for(Entry<String, ArrayList<Integer>> entry1 : map.entrySet())
{
if (!entry.getKey().equals(entry1.getKey()))
{
if (entry.getValue().equals(entry1.getValue())) {
map1.put(entry1.getKey(), entry1.getValue());
}
}
else {
if (map1.isEmpty()) {
map1.put(entry.getKey(), entry.getValue());
}
else {
if (map1.containsValue(entry.getValue())) {
map1.put(entry.getKey(), entry.getValue());
}
}
}
}
}
我得到了解决方案..谢谢你们:)