【发布时间】:2020-10-04 20:44:48
【问题描述】:
所以我有一个类对,它存储两个变量:键和值。我还有一个 MyArrayList 类,它扩展了 ArrayList 并包含一个快速排序方法,该方法将对插入的整数数组列表进行排序。我的问题是如何使这种快速排序方法与对而不是数组列表中的单个值一起使用。 对类:
class Pair<K extends Comparable<K>, V extends Comparable<V>> {
public K key;
public V value;
// Default Constructor
public Pair(){
}
// Parametrized Constructor
public Pair(K key, V value){
this.key = key;
this.value = value;
}
@Override
public String toString() {
return "Pair {" + this.key + ", " + this.value + "}";
}
// Setter Functions:
public void setKey(K key){
this.key = key;
}
public void setValue(V value){
this.value = value;
}
// Getter Functions:
public K getKey(){
return key;
}
public V getValue(){
return value;
}
}
MyArrayList 类:
public class MyArrayList<K extends Comparable<K>, V extends Comparable<V>> extends ArrayList<Pair<K,V>>{
MyArrayList<Integer ,Integer> array = new MyArrayList<Integer,Integer>();
public static void main(String[] args){
MyArrayList<String,Integer> array = new MyArrayList<String,Integer>();
}
public String String(){
ArrayList<String> copy = (ArrayList<String>)array.clone();
return copy.toString();
}
public ArrayList QuickSort(ArrayList<Integer> arr){
if (arr.size()< 1) return arr;
ArrayList<Integer> sorted = new ArrayList<Integer>();
ArrayList<Integer> lesser = new ArrayList<Integer>();
ArrayList<Integer> greater = new ArrayList<Integer>();
Integer pivot = arr.get(arr.size()-1);
for (int i = 0; i < array.size()-1; i++)
{
if (arr.get(i) < pivot)
lesser.add(arr.get(i));
else
greater.add(arr.get(i));
}
lesser = QuickSort(lesser);
greater = QuickSort(greater);
lesser.add(pivot);
lesser.addAll(greater);
sorted = lesser;
return sorted;
}
}
【问题讨论】:
-
为什么要自己实现排序?您的列表项已经实现了 Comparable,因此您只需在列表上调用 .sort()。