30

オブジェクトのArrayListを電子メールに従ってアルファベット順に並べ替え、並べ替えた配列を出力するメソッドを作成する必要があります。仕分けに苦労している部分。私はそれを研究し、使用しようとしCollections.sort(vehiclearray);ましたが、それは私にとってはうまくいきませんでした. コンパレータと呼ばれるものが必要だったのですが、それがどのように機能するのかわかりませんでした。それらを使用する必要がありますか、それともバブルソートや挿入ソートのようなものがこの種のもので機能しますか?

これは私がこれまでに持っているコードです:

public static void printallsort(ArrayList<vehicle> vehiclearray){

   ArrayList<vehicle> vehiclearraysort = new ArrayList<vehicle>();
   vehiclearraysort.addAll(vehiclearray);

 //Sort
   for(int i = 0; i < vehiclearraysort.size(); i++) 
   if ( vehiclearray.get(i).getEmail() > vehiclearray.get(i+1).getEmail())

//Printing 
   for(i = 0; i < vehiclearraysort.size(); i++)           
   System.out.println( vehiclearraysort.get(i).toString() + "\n");

}
4

5 に答える 5

97

ソート部分は、カスタムを実装することで実行できますComparator<Vehicle>

Collections.sort(vehiclearray, new Comparator<Vehicle>() {
    public int compare(Vehicle v1, Vehicle v2) {
        return v1.getEmail().compareTo(v2.getEmail());
    }
});

この匿名クラスは、対応する電子メールに基づいてアルファベット順にVehicleオブジェクトをソートするために使用されます。ArrayList

Java8 にアップグレードすると、メソッド参照を使用して、より簡潔な方法でこれを実装することもできます。

Collections.sort(vehiclearray, Comparator.comparing(Vehicle::getEmail));
于 2013-10-19T20:53:43.880 に答える
13

質問にはすでに受け入れられている回答がありますが、Java 8 ソリューションを共有したいと思います。

// if you only want to sort the list of Vehicles on their email address
Collections.sort(list, (p1, p2) -> p1.getEmail().compareTo(p2.getEmail()));

.

// sort the Vehicles in a Stream
list.stream().sorted((p1, p2) -> p1.getEmail().compareTo(p2.getEmail()));

.

// sort and print with a Stream in one go
list.stream().sorted((p1, p2) -> p1.getEmail().compareTo(p2.getEmail())).forEach(p -> System.out.printf("%s%n", p));

.

// sort with an Comparator (thanks @Philipp)
// for the list
Collections.sort(list, Comparator.comparing(Vehicle::getEmail));
// for the Stream
list.stream().sorted(Comparator.comparing(Vehicle::getEmail)).forEach(p -> System.out.printf("%s%n", p));
于 2014-12-12T13:26:49.757 に答える
0

パッケージsrikantdukuntla;

import java.util.ArrayList; java.util.List をインポートします。

public class AlphabetsOrder {

public static void main(String[] args) {

    String temp;
    List<String> str= new ArrayList<String>();

    str.add("Apple");
    str.add("zebra");
    str.add("Umberalla");
    str.add("banana");
    str.add("oxo");
    str.add("dakuntla");
    str.add("srikanthdukuntla");
    str.add("Dukuntla");

    for(int i=0;i<str.size();i++){

        for(int j=i+1;j<str.size();j++){

     if(str.get(i).compareTo(str.get(j))<0){

            temp=str.get(i);
            str.set(i, str.get(j));
            str.set(j,temp );   

     }
        }
    }

  System.out.println("List of words in alphabetical order   "+str);

}

}

于 2015-08-16T21:02:08.957 に答える
0

このリンクでは、オブジェクトの配列リストを降順および昇順でソートするのに役立つコードを見つけることができます。

http://beginnersbook.com/2013/12/java-arraylist-of-object-sort-example-comparable-and-comparator/

于 2015-03-30T05:47:15.357 に答える