67,512
社区成员
发帖
与我相关
我的任务
分享
public class TimesTotal<T> {
public static void main(String[] args) {
Integer key1 = new TimesTotal<Integer>()
.sameTimes(new Integer[] { 1, 2, 2, 2, 1, 3, 4, 5 },
new Integer[] { 1, 2, 3, 1, 4, 5, 2, 2 });
Double key2 = new TimesTotal<Double>().sameTimes(new Double[] { 1.0D,
2.0D, 2.0D, 2D, 1.0D, 3.0D, 4.0D, 5.0D }, new Double[] { 1D,
2D, 2D, 2D, 1D, 3D, 4D, 5D });
System.out.println(key1);
System.out.println(key2);
}
public T sameTimes(T[] arr1, T[] arr2) {
if(null == arr1 || null == arr2){
return null;
}
Map<T, Integer> mapArr1 = new HashMap<T, Integer>();
Map<T, Integer> mapArr2 = new HashMap<T, Integer>();
for (T a : arr1) {
int total = mapArr1.get(a) == null ? 0 : mapArr1.get(a);
mapArr1.put(a, total + 1);
}
for (T a : arr2) {
int total = mapArr2.get(a) == null ? 0 : mapArr2.get(a);
mapArr2.put(a, total + 1);
}
Entry<T, Integer> entry = null;
Set<Entry<T, Integer>> entrySet = mapArr1.entrySet();
Iterator<Entry<T, Integer>> ite = (Iterator<Entry<T, Integer>>) entrySet
.iterator();
while (ite.hasNext()) {
Entry<T, Integer> e = ite.next();
Integer times2 = mapArr2.get(e.getKey());
if (null == times2) {
continue;
}
if (e.getValue().equals(times2)) {
if (null == entry
|| e.getValue().compareTo(entry.getValue()) >= 0) {
entry = e;
}
}
}
return entry == null ? null : entry.getKey();
}
}