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