JAVA如何使用一个for循环语句遍历两个数组找出比较两个数组出现相同次数最多的值

解决方案 »

  1.   

    创建个map,遍历时吧值当做map的key,每出现一次key值+1,最后取map就行了
      

  2.   

    按楼上的思路~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();
    }
    }
      

  3.   

    只能用一个for循环,也不能使用集合,具体的代码实现是怎样的?
      

  4.   

    只能用一个for循环,也不能使用集合,具体的代码实现是怎样的?