在Java中连接两个列表的一部分
我有两个带有项目的列表(列表1和列表2)。 我将创建第三个,这里称为list_mix,包含10项,它将接收:在Java中连接两个列表的一部分,java,list,join,Java,List,Join,我有两个带有项目的列表(列表1和列表2)。 我将创建第三个,这里称为list_mix,包含10项,它将接收: 前6个位置或60%的列表1和 前4个位置或列表2的40% 该新列表(list_mix)应随机接收列表1和列表2中的项目 以下是一个例子: 公共类加入列表{ public static void main(String[] args) { List<String> list1 = new ArrayList<String>();
- 前6个位置或60%的列表1和
- 前4个位置或列表2的40%
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);
}
如果我使用“.addAll”,我将获得所有项目,但我只需要两个列表中的前一个。我如何获得这些项目?您可以使用以下方法:
list_mix.addAll(list1.subList(0, 6));
list_mix.addAll(list2.subList(0, 4));
然后使用“集合.洗牌”(list_mix);以下是一种可以为您清除问题的方法:
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
}
public List getSubList(列表输入,整数大小){
列表返回;
如果(in.size()>10){//if>10,(幅值*10)%
//使用百分比
back=newarraylist(in);//防止修改外部内容
Collections.shuffle(back);//随机化,如果处理大集合,则使用ThreadLocalRandom
幅值=(in.size()*(幅值*10))/100;//设置新的幅值
}否则{
back=in;//如果不使用百分比,则只使用插入的元素
}
return back.subList(0,震级);//返回我们的subList
}
那么就简单到:
List<String> mixed = new ArrayList<>();
mixed.addAll(getSubList(list1, 6));
mixed.addAll(getSubList(list2, 4));
List mixed=new ArrayList();
mixed.addAll(getSubList(list1,6));
mixed.addAll(getSubList(list2,4));
您可以创建一个方法,该方法将有助于提取给定百分比的部分列表
一旦你有了你的子列表,你就应该使用它来随机化结果
我还更新了代码中初始化数组字符串的方式,下面是更新的代码
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);
}
}
希望这有帮助
干杯!!谢谢Jean!这帮了我大忙Hanks Sacnhin,当然帮了我:)我真的很感激你对代码的关心,这是最好的回答谢谢你非常无赖:)
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]