Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中连接两个列表的一部分_Java_List_Join - Fatal编程技术网

在Java中连接两个列表的一部分

在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>();

我有两个带有项目的列表(列表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>();
        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]