繁体   English   中英

如何从数组列表中获取不同的值?

[英]How to get distinct values from an arraylist?

恐怕我对集合和数据结构的理解不够,无法处理有关哈希集的类似问题。 我目前有一个循环,该循环在程序中将数组内的索引随机化。 传递给该方法的原始数组由所有小于1000的质数组成。

不包括完整的程序,因为它是较大的作业的一部分。

我的问题是我创建的if语句重复打印出数字,即使我以为我编码它也只是在数字已经不在数组中时才打印出数字。

有人可以指出我的逻辑错误吗?

public static void shuffle(int[] intArray, String name)
{
    assert intArray != null : "null!";
    long seed = name.hashCode();
    Random random = new Random(seed);

    for(int i = 0; i < 1000; i++)
    {
        int random_m = random.nextInt(intArray.length);
        int random_n = random.nextInt(intArray.length);

        int temp = intArray[random_m];
        intArray[random_m] = intArray[random_n];
        intArray[random_n] = temp;

        int zeroIndex = intArray[0];
        List<Integer> myList = new ArrayList<Integer>();

        if(!myList.contains(zeroIndex))
        {
            System.out.println(zeroIndex);
        }
        myList.add(zeroIndex);
    }
}

输出的部分示例:

5821 5821 5821 5821 5821 5821 5821 5821 5821 5821 5821 5821

        List<Integer> myList = new ArrayList<Integer>();

此代码行通过每次迭代为myList创建新的memorySpace,因此,每次迭代循环时,都会重置myList值。

因此,请在循环之外定义myList。

使用int zeroIndex = intArray[i];

希望你现在得到它:-)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM