我有两个包含项目的列表(列表1和列表2)。 我将创建第三个,这里称为list_mix,有10个项目,它将收到:
新列表(list_mix)应该随机接收列表1和2中的项目。
这是一个例子: 公共类JoinLists {
public static void main(String[] args) {
List<String> list1 = new ArrayList<String>();
list1.add("dog","cat","rabbit","bat","zebra","bear","turtle","mouse","fly","bird");
List<String> list2 = new ArrayList<String>();
list2.add("bee","horse","mule","cow","fish","shark","lion","tiger","elephant","panther");
List<String> list_mix = new ArrayList<String>();
list_mix.addAll(list1);
list_mix.addAll(list2);
System.out.println("list1 : " + list1);
System.out.println("list2 : " + list2);
System.out.println("list_mix : " + list_mix);
}
我想要的是list_mix中的以下结果: 输出
list1 : [dog,cat,rabbit,bat,zebra,bear,turtle,mouse,fly,bird]
list2 : [bee,horse,mule,cow,fish,shark,lion,tiger,elephant,panther]
list_mix : [dog,bee,cat,horse,rabbit,mule,bat,cow,zebra,bear] //A list with 10 items, using 60% of list 1 and 40% of list 2
如果我使用“.addAll”我将获得所有项目,但我只想要两个列表中的第一个。我怎么能得到这个?
答案 0 :(得分:1)
您可以使用subList
方法:
list_mix.addAll(list1.subList(0, 6));
list_mix.addAll(list2.subList(0, 4));
然后使用Collections.shuffle(list_mix);
答案 1 :(得分:0)
这是一种可以为您解决问题的方法:
public List<String> getSubList(List<String> in, int magnitude) {
List<String> back;
if (in.size() > 10) { // if > 10, (magnitude*10)% can be more than magnitude
//use percentage
back = new ArrayList<>(in); //prevent modifying outside contents
Collections.shuffle(back); //randomize, use ThreadLocalRandom instead if working with big collections
magnitude = (in.size() * (magnitude * 10)) / 100; //set our new magnitude
} else {
back = in; //just use inserted elements if not using percentage
}
return back.subList(0, magnitude); //return our sublist
}
然后它就像:
一样简单List<String> mixed = new ArrayList<>();
mixed.addAll(getSubList(list1, 6));
mixed.addAll(getSubList(list2, 4));
答案 2 :(得分:0)
您可以创建一种方法,以帮助提取给定百分比的列表的一部分。
获得子列表后,应使用Collections.shuffle随机化结果。
我还更新了代码中初始化数组字符串的方式,这里是更新的代码。
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class RandomList {
private static List<String> getSubList(List<String> list, int percentage) {
return list.subList(0, (percentage / 10));
}
public static void main(String[] args) {
String[] array1 = { "dog", "cat", "rabbit", "bat", "zebra", "bear",
"turtle", "mouse", "fly", "bird" };
List<String> list1 = new ArrayList<String>();
list1.addAll(Arrays.asList(array1));
String[] array2 = { "bee", "horse", "mule", "cow", "fish", "shark",
"lion", "tiger", "elephant", "panther" };
List<String> list2 = new ArrayList<String>();
list2.addAll(Arrays.asList(array2));
List<String> list_mix = new ArrayList<String>();
list_mix.addAll(getSubList(list1, 60));
list_mix.addAll(getSubList(list2, 40));
Collections.shuffle(list_mix);
System.out.println("list1 : " + list1);
System.out.println("list2 : " + list2);
System.out.println("list_mix : " + list_mix);
}
}
输出
list1 : [dog, cat, rabbit, bat, zebra, bear, turtle, mouse, fly, bird]
list2 : [bee, horse, mule, cow, fish, shark, lion, tiger, elephant, panther]
list_mix : [cat, cow, zebra, rabbit, mule, dog, bear, bat, horse, bee]
希望这有帮助。
干杯!!