我無法將陣列串列中的所有零移動到陣列串列的末尾,同時保持非零數字的順序與它們相同。例如,假設陣列串列有數字 (0,1,0,3,12),程式應該輸出 (1,3,12,0,0)。我的輸出的問題是當我列印串列時,它以與原始串列相同的方式列印它,我對需要添加什么來解決這個問題感到困惑。
我的代碼:
List<Integer> nums =Arrays.asList(0,1,0,3,12);
int last = 0;
int hold = nums.get(last );
for (int i = 0; i < nums.size(); i ) {
if (nums.get(i) == 0) {
hold = nums.get(i);
}
}
for (int i = last; i < nums.size(); i ) {
int hold1 = nums.get(i);
hold1 = 0;
}
System.out.println(nums);
更新:提前為代碼塊抱歉,我把它放在引號塊中,沒有它它仍然列印出來。
uj5u.com熱心網友回復:
您可以為此使用自定義比較器,如下所示:
public class CustomComparator implements Comparator<Integer> {
@Override
public int compare(Integer o1, Integer o2) {
if (o1 == 0) {
return 1; // sets 0 as greater than o2 and thus it is located after o2
} else if (o2 == 0) {
return -1; // sets 0 as greater than o1 and thus it is located after o1
} else {
return 0; // sets that o1 and o2 are equal, actually keeping the order
}
}
}
您可以輕松使用此比較器:
List<Integer> nums =Arrays.asList(0,1,0,3,12);
Collections.sort(nums, new CustomComparator());
System.out.println(nums);
您可以在此處閱讀有關自定義比較器的更多資訊:
- https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Comparator.html#compare(T,T)
- https://www.baeldung.com/java-comparator-comparable
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/341669.html
標籤:爪哇
