0

そのため、ジェネリック配列リストから送信した情報で TextArea を更新する方法がわかりません。今のところ、プログラムは新しい注文を作成します:

Order d1 = new Order();

次に、ユーザーがデータを選択して追加ボタンを押すと、注文が TextArea に追加されます。私が抱えている問題は、注文をリストの正しい場所に追加し、毎回更新する必要があることです. 私はそれを 1 つの項目で並べ替えているだけです。CompareTo メソッドを使用してそれを行う方法がよくわかりません。

 public void actionPerformed(ActionEvent event) 
 {
     ArrayList<Drink> DrinkArray = new ArrayList<Drink>();

     if (event.getSource() == addcoffeeButton)
     {

         String coffeesize = (String) sizecoffeelist.getSelectedItem();
         double coffeeprice = Double.parseDouble(pricecoffeeTextfield.getText());

         String coffeetype = (String) cuptypecoffeelist.getSelectedItem();
         String coffeecaffeine = (String) caffeineList.getSelectedItem();
         String coffeeroom = (String) roomforcreamList.getSelectedItem();
         String coffeeadditional = additionalflavorList.getText();
         if  ((coffeeadditional.isEmpty()))
             coffeeadditional = "No Additional Flavor";

         Drink d1 = new Coffee(coffeesize, coffeeprice, coffeetype, coffeecaffeine, coffeeroom, coffeeadditional);


          DrinkArray.add(d1);
          orderTextArea.append(d1);

したがって、飲み物を配列に追加してテキスト領域に印刷する前に、飲み物を正しい場所に追加する必要がありますが、その方法はよくわかりません。

4

2 に答える 2

2

Drinkが実装されていると仮定しますComparable。意味がわからない場合は、javadoc を参照してください。

それが本当なら、これを行うことができます:

List<Drink> drinks = new ArrayList<Drink>();
// add Drinks
Collections.sort(drinks); // now they're sorted according to your Comparable.

a をインスタンス化Comparatorして sorts メソッドに渡すこともできます。

このようなもの(getValue()関数を好きなようにします):

public class DrinkComparator implements Comparator<Drink> {
    public int compare(Drink d1, Drink d2) {
       if (d1.getValue() < d2.getValue()) { 
           return -1;
       } else if (d1.getValue() > d2.getValue()) {
           return 1;
       } else {
           return 0;
       }
    } 

    public boolean equals(Object obj) {
        return this.compare(this, (Drink)obj) == 0;
    }  
}
于 2012-10-01T00:08:22.560 に答える
0

基本的に、「オブジェクト」が挿入される挿入ポイントを事前に決定する必要があります...

を見てみましょうCollections.binarySearch(List<T>, T)

Java ドキュメントから

戻り値:

リストに含まれている場合は、検索キーのインデックス。 それ以外の場合は (-(挿入ポイント) - 1)。挿入ポイントは、キーがリストに挿入されるポイントとして定義されます。キーより大きい最初の要素のインデックス、またはリスト内のすべての要素が指定されたキーより小さい場合は list.size() です。これにより、キーが見つかった場合にのみ、戻り値が >= 0 になることが保証されることに注意してください。

于 2012-10-01T00:22:13.880 に答える