如何创建一个没有重复的数组?

时间:2014-05-12 16:48:45

标签: java arrays

我有一个数组s1,其值为[Alex, Jonh, Smith, Gomer, Bart, Peter, Bob]。 该程序创建一个值为s2的新数组[Jonh, Bart, null, null]

您能否建议一种方法,将s1的随机值添加到s2而不重复?

示例

首先输入:s1 = [Jonh, Bart, Peter, Alex]
第二个输入:s2 = [Jonh, Bart, Gomer, Smith]

2 个答案:

答案 0 :(得分:0)

使用队列删除功能。不是最有效的方法,但你不必编写一行(真实)逻辑

String[] names = new String[]{"Alex", "Jonh", "Smith", "Gomer", "Bart", "Peter", "Bob"};

//create list from your array
List<String> namesList = new ArrayList<String>(Arrays.asList(names));

//shuffle list
Collections.shuffle(namesList);

//create queue with shuffeld content
Queue<String> shuffeldQueue = new ArrayDeque<String>(namesList);

//this will get and remove the queue's head i.e. it's first element (which a random element)
String randomName = shuffeldQueue.remove();

答案 1 :(得分:0)

如果要在将重复元素添加到两个数组的并集后过滤掉重复元素,可以使用array_unique。请注意array_unique不能用于多维数组:

  

请注意,array_unique()不适用于多维数组。

不同的是,如果您想在添加重复元素之前放弃重复元素,请查看Set类。只需要注意PHP 7在Requirements页面中列为要求。如果您尚未安装,我建议您在网上检查第三方库。

第三个也是最后一个解决方案是在添加之前手动检查是否存在可能重复的元素,但这是任何人都可能达到的解决方案。