嗨,大家好,我是編碼方面的新手,我在排序過去的幾天中遇到了一些小問題。如果我有3個元素,讓我們說1-3-2,排序工作正常,但是當我有最大數量(2-1-3)時,它根本不起作用。我找不到任何解決方案,我已經閱讀了大量的問題和材料,但是當我擁有最大的元素時,我仍然無法找到解決方案。我希望有些代碼能夠找到這個錯誤。當最後一個元素是Java中最大的元素時,沒有按升序排序
import java.util.ArrayList;
import java.util.Comparator;
public class MainClass {
private static void printArrayList(ArrayList<Human> arr){
arr.forEach(x -> x.printInfo());
}// end
private static ArrayList<Human> sortComparator(ArrayList<Human> arr){
Object[] sortedHumans = arr.stream().sorted(new Comparator<Human>(){
@Override
public int compare(Human h1, Human h2){
return Float.compare(h1.salary, h2.salary);
}
}).toArray();
ArrayList<Human> sortedArr = new ArrayList<Human>();
for(int i=0;i<sortedHumans.length;i++){
sortedArr.add((Human)sortedHumans[i]);
}
return sortedArr;
}// end
private static ArrayList<Human> sortArrayList(ArrayList<Human> arr){
ArrayList<Human> result = new ArrayList<Human>();
if(arr.size()>0){
result.add(arr.get(0));
}
else{
return null;
}
boolean flag = false;
for(int i=1;i<arr.size();i++){
for(int j=0;j<result.size();j++){
if(arr.get(i).salary < result.get(j).salary){
result.add(j,arr.get(i));
flag = true;
break;
}// end for j
else;
}//end for j
if(!flag){
result.add(arr.get(i));
flag = false;
}
else;
}// end for i
return result;
}// end sort
public static void main(String[] args) {
// TODO Auto-generated method stub
ArrayList<Human> myList = new ArrayList<Human>();
Human h1 = new Human("Ivan","Ivanov", 33, 1000);
Human h2 = new Human("Petyr","Petrov", 53, 800);
Human h3 = new Human("Georgi","Georgiev", 23, 1548);
myList.add(h1);
myList.add(h2);
myList.add(h3);
printArrayList(sortArrayList(myList));
System.out.println("--------------");
printArrayList(sortComparator(myList));
}// end main
}// end MainClass
當最後一個元素最大時有輸出。
Petyr - Petrov - 53 - 800.0
Ivan - Ivanov - 33 - 1000.0
還有就是輸出時的最後一個元素是不是最大的,排序 作品...
Georgi - Georgiev - 23 - 548.0
Petyr - Petrov - 53 - 800.0
Ivan - Ivanov - 33 - 1000.0
這真是一個無賴......我知道這將是一件小事,因爲一切都看起來很完美。我的老師也說過旗幟出了問題,但我不知道我必須把它放到內部循環中。非常非常感謝你的男人。你剛剛救了一天。現在它工作,因爲它應該工作。非常感謝!! –
@KostadinLoparski不客氣! – Eran