1

1つのarraylistキーに複数の値を入れようとしていますが、代わりにエラーが発生します。

クラス:

public class BestellenWindow extends javax.swing.JFrame {
    private ArrayList<String> bestelling = new ArrayList<String>(); 

    public BestellenWindow() {
        initComponents();
    }

実行されたアクション:

private void BestellenbuttonActionPerformed(java.awt.event.ActionEvent evt) 
{
    bestelling.add(Barcodetext.getText(), Aantaltext.getText());
    System.out.println(bestelling.get(0));       
}

エラー:

add(java.lang.String、java.lang.String)メソッドに適したメソッドが見つかりませんjava.util.ArrayList.add(int、java.lang.String)は適用できません(実際の引数java.lang.Stringは変換できません)メソッド呼び出し変換によるintへ)メソッドjava.util.ArrayList.add(java.lang.String)は適用されません

4

4 に答える 4

1

Java には 2 つの要素があります。1. List Interface : これはキーを保持しません。値のコレクションがあります。add(value)メソッドで1つずつ追加できます。2. Map : これは、一連の値に対して 1 つのキーを保持します。

List<String> userName = new ArrayList<String>();
userName.add("Jesper");
userName.add("Mafue");

Map<Long,String> userMap = new HashMap<Long,String>();
userMap.put(1l,"Jesper");
userMap.put(2l,"Mafue");

マップから、キーを指定して値を取得できます。

于 2012-04-05T18:00:30.480 に答える
1

anArrayListは単なるリストです。「鍵」はありません。オブジェクトをキーで保存する場合MapHashMapList.

ただし、法線Mapはキーごとに 1 つの値しか格納できません。複数の値を保存したい場合は、Map<K, List<V>>(Kはキーの型とV値の型) を使用するか、たとえばGoogle GuavaMultimapから使用できます。

しかし、別の、おそらくより良い解決策もあります。バーコードとアンタルを保持する新しいクラスを作成し、そのクラスのインスタンスを に保存しますArrayList。例えば:

public class Bestelling {
    private String barcode;
    private int aantal;

    public Bestelling(String barcode, int aantal) {
        this.barcode = barcode;
        this.aantal = aantal;
    }

    public String getBarcode() {
        return barcode;
    }

    public int getAantal() {
        return aantal;
    }
}

// Later:
Bestelling b = new Bestelling(Barcodetext.getText(),
                              Integer.parseInt(Aantaltext.getText()));
bestelling.add(b);
于 2012-04-05T17:52:04.043 に答える
0

次のいずれかを使用します。

bestelling.add(...);
bestelling.add(...);
...

また

bestelling.addAll(Arrays.asList(..., ...));
于 2012-04-05T18:23:04.550 に答える
0

メソッドを呼び出そうとしています

list.add(int index, String value)

特定の位置に要素を挿入するために使用されます。

これが実際にやりたいことである場合、数値である文字列を含む必要があると思いますので、 withBarcodetextに変換する必要がありますint

Integer.parseInt(Barcodetext.getText())

代わりに複数の値を追加したい場合は、メソッドを 2 回呼び出します。

bestelling.add(Barcodetext.getText());
bestelling.add(Aantaltext.getText());
于 2012-04-05T17:51:15.147 に答える