日期:2014-05-20  浏览次数:20567 次

关于HashSet数组的比较
问题是这样的:

我有一个已知的数组int[] a ={1,2,3,4,5,6}

有一个随机产生的HashSet数组 
Java code
Set<Integer> set = new HashSet<Integer>();

            
            while (set.size() != 6) {
                int randomValue = random.nextInt(33) + 1;
                set.add(randomValue);
            }


我想让数组a和数组set,进行比较,比较方法是:数组a的第一个值和数组set的第一个值进行比较,数组a的第二个值和数组set的第二个值进行比较,以此类推!如果两个数组一样,就返回true,否则就返回false

请给位给出具体的算法代码!!!

------解决方案--------------------
Java code

import java.util.Arrays;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Random;
import java.util.Set;

public class Test {
    public static void main(String[] args) {
        int[] arr = new int[] { 1, 2, 3, 4, 5, 6 };
        Set<Integer> set = new HashSet<Integer>();
        Random random = new Random();
        while (set.size() != 6) {
            int randomValue = random.nextInt(33) + 1;
            set.add(randomValue);
        }
        System.out.println(check(arr, set));
    }

    static boolean check(int[] arr, Set<Integer> set) {
        if(arr.length != set.size())
            return false;
        Iterator<Integer> iterator = set.iterator();
        boolean flag = true;
        int[] result = new int[arr.length];
        while(iterator.hasNext()){
            Integer n = iterator.next();
            for(int i = 0;i < arr.length;i++){
                if(n == arr[i] && result[i] == 0){
                    result[i] = 1;
                    break;
                }
            }
        }
        for(int i = 0;i < result.length && flag;i++)
            flag &= (result[i] == 1);
        return flag;
    }
}