Java 基于另一个数组对对象的ArrayList排序

Java 基于另一个数组对对象的ArrayList排序,java,java-7,Java,Java 7,我想使用Java7基于另一个数组对对象的arraylist进行排序 List A ={[id:1,name:"A"],[id:2,name:"B"],[id:3,name:"C"],[id:4,name:"D"]} 数组:{2,4} 输出:{[id:2,名称:“B”],[id:4,名称:“D”],[id:3,名称:“C”],[id:1,名称:“A”]} 与下面的问题相同,但需要在Java7中实现相同的功能(不带Lambda) 我建议使用: int[] index = {2, 4};

我想使用Java7基于另一个数组对对象的arraylist进行排序

List A ={[id:1,name:"A"],[id:2,name:"B"],[id:3,name:"C"],[id:4,name:"D"]}
数组:{2,4}

输出:{[id:2,名称:“B”],[id:4,名称:“D”],[id:3,名称:“C”],[id:1,名称:“A”]}

与下面的问题相同,但需要在Java7中实现相同的功能(不带Lambda)

我建议使用:

    int[] index = {2, 4};
    List<Model> modelList = new ArrayList<>(Arrays.asList(new Model(1, "a"),
            new Model(2, "b"), new Model(3, "c"),
            new Model(4, "d")));
    Map<Integer, Model> modelMap = new HashMap<>();
    for (Model model : modelList) {
        modelMap.put(model.id, model);
    }
    // sort by index
    modelList.clear();
    for (int anIndex : index) {
        modelList.add(modelMap.get(anIndex));
        modelMap.remove(anIndex);
    }
    if (!modelMap.isEmpty()) {
        for (Map.Entry<Integer, Model> entry : modelMap.entrySet()) {
            modelList.add(entry.getValue());
        }
    }
    System.out.println(modelList);
int[]index={2,4};
List modelList=new ArrayList(Arrays.asList)(新模型(1,“a”),
新型号(2,“b”)、新型号(3,“c”),
新型号(4,“d”);
Map modelMap=新的HashMap();
对于(模型:模型列表){
modelMap.put(model.id,model);
}
//按索引排序
modelList.clear();
for(int-anIndex:index){
add(modelMap.get(anidex));
modelMap.remove(索引);
}
如果(!modelMap.isEmpty()){
对于(Map.Entry:modelMap.entrySet()){
add(entry.getValue());
}
}
System.out.println(模型列表);

然后不要使用lambda:)。。。嗯,那不一样。。。这完全一样。你能在不使用lambdaI的情况下帮助解决这个问题吗?我尝试过重写compare方法。但是幸运的是,你还没有找到使用Lambdas的有效解决方案。现在,您所需要做的就是了解那里发生了什么,并使用Java7特性来实现它。。。您应该表明,您试图自己解决问题,而不是依赖我们为较旧的Java版本移植代码。然后,如果您在不使用Java 8任何功能的情况下找到了解决问题的有效解决方案,也可以将其作为链接问题的答案发布,这样每个提出该问题的人都可以从中获益:)