Java 将内容从一个列表转移到另一个列表

Java 将内容从一个列表转移到另一个列表,java,list,Java,List,我有一个小问题,我无法将内容从一个列表传输到另一个列表 这正是地方: MergeSort ms=newmergesort(carList.get().getMark()) 如何做到这一点? 我给出的代码正确吗?我愿意接受任何建议和提示:) 请帮我运行这个 我的主要问题(我这里有个问题): 添加来自@Jason的更新 最后是合并排序功能: package onlytest; import java.util.ArrayList; import java.util.List; public clas

我有一个小问题,我无法将内容从一个列表传输到另一个列表

这正是地方:

MergeSort ms=newmergesort(carList.get().getMark())

如何做到这一点? 我给出的代码正确吗?我愿意接受任何建议和提示:)

请帮我运行这个

我的主要问题(我这里有个问题):

添加来自@Jason的更新

最后是合并排序功能:

package onlytest;
import java.util.ArrayList;
import java.util.List;
public class MergeSort {

    private List strList;
    public  MergeSort(List<Car> input) {
        strList = input;
    }

    public void sort() {
        strList = mergeSort(strList);
    }

    List<Car> mergeSort(List<Car> whole) {
        List<Car> left = new ArrayList<>();
        List<Car> right = new ArrayList<>();
        int center;

        if (whole.size() == 1) {    
            return whole;
        } else {
            center = whole.size()/2;
            for (int i=0; i<center; i++) {
                    left.add(whole.get(i));
            }

            for (int i=center; i<whole.size(); i++) {
                    right.add(whole.get(i));
            }

            left  = mergeSort(left);
            right = mergeSort(right);

            merge(left, right, whole);
        }
        return whole;
    }

    private void merge(List<Car> left, List<Car> right, List<Car> whole) {
        int leftIndex = 0;
        int rightIndex = 0;
        int wholeIndex = 0;
        while (leftIndex < left.size() && rightIndex < right.size()) {
            if ( (String.valueOf(left.get(leftIndex)).compareTo(String.valueOf(right.get(rightIndex)))) < 0) {
                whole.set(wholeIndex, left.get(leftIndex));
                leftIndex++;
            } else {
                whole.set(wholeIndex, right.get(rightIndex));
                rightIndex++;
            }
            wholeIndex++;
        }

        List<Car> rest;
        int restIndex;
        if (leftIndex >= left.size()) {
            rest = right;
            restIndex = rightIndex;
        } else {
            rest = left;
            restIndex = leftIndex;
        }

        for (int i=restIndex; i<rest.size(); i++) {
            whole.set(wholeIndex, rest.get(i));
            wholeIndex++;
        }
    }

    public void show() {

        System.out.println("Mark:         Price:");
        for (int i=0; i< strList.size();i++) {
            System.out.println(strList.get(i));
        }
    }

}```
package onlytest;
导入java.util.ArrayList;
导入java.util.List;
公共类合并排序{
私有列表strList;
公共合并排序(列表输入){
strList=输入;
}
公共无效排序(){
strList=mergeSort(strList);
}
列表合并排序(整个列表){
左列表=新建ArrayList();
List right=new ArrayList();
国际中心;
如果(整.size()==1){
全部归还;
}否则{
中心=整个.size()/2;

对于(int i=0;i代码没有任何意义。不幸的是,Car不应该由两个Car列表组成。通过方法的实现,这些列表应该是String类型和Integer类型

公车{
私人最终字符串标记;
私人最终int价格;
汽车(字符串标记,整数价格){
这个。马克=马克;
这个价格=价格;
}
公共字符串getMark(){
返回标记;
}
public int getPrice(){
退货价格;
}
@凌驾
公共字符串toString(){
返回“标记:+标记+”,价格:+价格;
}
}

不幸的是,代码没有任何意义。Car不应该由两个Car列表组成。通过方法的实现,很明显,这些列表应该是String类型和Integer类型

公车{
私人最终字符串标记;
私人最终int价格;
汽车(字符串标记,整数价格){
这个。马克=马克;
这个价格=价格;
}
公共字符串getMark(){
返回标记;
}
public int getPrice(){
退货价格;
}
@凌驾
公共字符串toString(){
返回“标记:+标记+”,价格:+价格;
}
}

你到底想合并/排序什么?现在我尝试只合并排序标记,最后我需要在2-3个字符串之间选择什么?你如何合并汽车的名称?与其说你想如何合并,不如说你想解释你想做什么。我正试着做一个合并排序算法,该算法将在arraylist上运行。列表项必须是对象你到底想按什么进行合并/排序?现在我尝试只合并排序标记,最后我需要在2-3个字符串之间进行选择。什么?你如何合并汽车的名称?与其告诉你想怎么做,不如解释你想做什么。我试着做一个合并排序算法,该算法将在arraylist上运行。列表项必须是物体
public class Car {

        private final String mark;

        private final int price;

        Car(String mark, int price){
            this.mark = mark;
            this.price = price;
        }

        public String getMark(){
            return mark;
        }

        public int getPrice(){
            return price;
        }

        @Override
        public String toString(){
            return "Mark: "+mark+", price: "+price;
        }
    }
package onlytest;
import java.util.ArrayList;
import java.util.List;
public class MergeSort {

    private List strList;
    public  MergeSort(List<Car> input) {
        strList = input;
    }

    public void sort() {
        strList = mergeSort(strList);
    }

    List<Car> mergeSort(List<Car> whole) {
        List<Car> left = new ArrayList<>();
        List<Car> right = new ArrayList<>();
        int center;

        if (whole.size() == 1) {    
            return whole;
        } else {
            center = whole.size()/2;
            for (int i=0; i<center; i++) {
                    left.add(whole.get(i));
            }

            for (int i=center; i<whole.size(); i++) {
                    right.add(whole.get(i));
            }

            left  = mergeSort(left);
            right = mergeSort(right);

            merge(left, right, whole);
        }
        return whole;
    }

    private void merge(List<Car> left, List<Car> right, List<Car> whole) {
        int leftIndex = 0;
        int rightIndex = 0;
        int wholeIndex = 0;
        while (leftIndex < left.size() && rightIndex < right.size()) {
            if ( (String.valueOf(left.get(leftIndex)).compareTo(String.valueOf(right.get(rightIndex)))) < 0) {
                whole.set(wholeIndex, left.get(leftIndex));
                leftIndex++;
            } else {
                whole.set(wholeIndex, right.get(rightIndex));
                rightIndex++;
            }
            wholeIndex++;
        }

        List<Car> rest;
        int restIndex;
        if (leftIndex >= left.size()) {
            rest = right;
            restIndex = rightIndex;
        } else {
            rest = left;
            restIndex = leftIndex;
        }

        for (int i=restIndex; i<rest.size(); i++) {
            whole.set(wholeIndex, rest.get(i));
            wholeIndex++;
        }
    }

    public void show() {

        System.out.println("Mark:         Price:");
        for (int i=0; i< strList.size();i++) {
            System.out.println(strList.get(i));
        }
    }

}```