LinkedList <class>与超过2个合并

时间:2018-07-06 17:04:38

标签: java linked-list

我用成对的图像进行小型游戏,而不需要成对,因此我陷入了合并它们所对象的所有LinkedList都是拥有构造函数的类的麻烦。他们存储x,y和裁剪的img。当节点不起作用时,我可以做些什么来将此列表合并为一个。我的目标是拥有一个LinkedList,将其在框架上随机播放。

我得到了

enter image description here

以及我想达到的目标

enter image description here

不能用addAll做到这一点,因为我很少有LinkedList引用不同的类。每个类都有不同的img和动画。

private LinkedList<Odkryte00> os = new LinkedList<Odkryte00>();
    private LinkedList<Odkryte01> os2 = new LinkedList<Odkryte01>();
    private LinkedList<Odkryte02> os3 = new LinkedList<Odkryte02>();
    private LinkedList<Odkryte03> os4 = new LinkedList<Odkryte03>();
    private LinkedList<Odkryte04> os5 = new LinkedList<Odkryte04>();
    private LinkedList<Odkryte05> os6 = new LinkedList<Odkryte05>();

1 个答案:

答案 0 :(得分:1)

听起来您想将多个LinkedList合并在一起,并随机组合列表中的项目,以便可以在显示的图像中随机排列木板的各个部分。这在Java中非常容易实现,并且已经有内置的方法可以使用Collections来实现。

注意到您的更新

您希望将各种类型的对象的LinkedList作为最终列表,使用 addAll()仍很可能完成此操作,只需要对我显示的内容进行一些编辑即可较早。

为此,我们返回:

LinkedList<Object>

从我之前放在一起的 combineAndShuffle()方法开始,像这样:

import java.util.Collections;
import java.util.LinkedList;

public class Test{

    @SafeVarargs
    public static LinkedList<Object> combineAndShuffle(LinkedList<?>... l){
        //must be <Object> because it needs to hold multiple types of objects
        LinkedList<Object> finalList = new LinkedList<>();

        //use <?> wildcard because we are unsure what value we will hit
        for(LinkedList<?> list: l) {
            finalList.addAll(list);
        }
        //shuffle the list
        Collections.shuffle(finalList);

        return finalList;
    }

    public static void main(String [] args){
        //list of strings
        LinkedList<String> listA = new LinkedList<>();
        listA.add("One");
        listA.add("Two");

        //list of integers, so a different class type
        LinkedList<Integer> listB = new LinkedList<>();
        listB.add(3);
        listB.add(4);

        LinkedList<Object> combinedList = combineAndShuffle(listA, listB);
        for(Object item: combinedList)
            System.out.println(item);   
    }
}