我有一个数组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]
。
答案 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页面中列为要求。如果您尚未安装,我建议您在网上检查第三方库。
第三个也是最后一个解决方案是在添加之前手动检查是否存在可能重复的元素,但这是任何人都可能达到的解决方案。