Najprostszym rozwiązaniem
Wystarczy wdrożyć java.lang.Porównywalne interfejs w was klasy jak następuje:
class MyStruct implements Comparable<MyStruct>{
public Boolean GUI;
public float CallTime;
public String ReqID;
public String ReqGUID;
public String Stereotype;
public String StereotypeGUID;
@Override
public int compareTo(MyStruct other) {
return ReqID.compareTo(other.ReqID);
/* also you can use ReqID.compareToIgnoreCase(other.ReqID); */
}
@Override
public String toString() {
return "(" + ReqID + ")";
}
}
Zastąp także toString() metodę tylko do drukowania.
Ponadto, należy pamiętać, że CompareTo struny() metoda sortuje użyciu leksykograficznego zamówienia. Jeśli chcesz mieć identyfikatory numeryczne, lepiej jest użyć int lub innego typu liczbowego. Poniżej pełny kod uporządkować za pomocą Arrays.sort(), jak również Collections.sort() - wybrać to, co najbardziej Ci odpowiada :)
public class MyStructSort {
private final static String[] STRUCT_IDS = {"C", "D", "A", "Aa", "B", "Z", "Aaa" };
private static List<MyStruct> createList() {
List<MyStruct> structList = new ArrayList<MyStruct>();
for (String id: STRUCT_IDS) {
MyStruct struct = new MyStruct();
struct.ReqID = id;
structList.add(struct);
}
return structList;
}
public static void main(String[] args) {
List<MyStruct> dataList = createList();
/* Sort using Lists (Collections) */
Collections.sort(dataList);
System.out.println("List sort:\t" + dataList);
/* Sort using arrays */
MyStruct[] dataArray = dataList.toArray(new MyStruct[dataList.size()]);
Arrays.sort(dataArray);
// print sorted array
System.out.print("Array sort:\t");
for (MyStruct struct: dataArray) {
System.out.print(struct+" ");
}
}
}
Jest to kod tylko demonstracja, więc niektóre null kontrole i pobierające i ustawiające byłby potrzebny, aby był idealny.
Proponuję rozważyć użycie 'boolean' zamiast' Boolean', użyj 'double' zamiast' float', uczyń pola 'final' i' private' lub package-local, jeśli możesz. –