一个ArrayList键中的多个值

时间:2012-04-05 17:46:53

标签: java arraylist

我正在尝试将多个值放在一个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 个答案:

答案 0 :(得分:1)

ArrayList只是一个列表。它没有“钥匙”。如果要按键存储对象,请使用接口Map的实现(例如HashMap)而不是List

但是,正常Map每个键只能存储一个值。如果您想存储多个值,可以使用Map<K, List<V>>(其中K是键类型,V是值类型),或者您可以使用例如Multimap来自Google Guava

但也有另一种可能更好的解决方案。创建一个新类来保存条形码和aantal,并将该类的实例存储在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);

答案 1 :(得分:1)

在Java中有两个元素。 1.列表界面:这不包含任何键。它具有值的集合。您可以通过add(value)方法逐个添加。 2.地图:它包含一组值的一个键。

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");

您可以通过提供密钥来检索值。

答案 2 :(得分:0)

您正在尝试调用方法

list.add(int index, String value)

用于在特定位置插入元素。

如果这是您真正想要的,那么我想Barcodetext应该包含一个数字字符串,因此您需要将其转换为int

Integer.parseInt(Barcodetext.getText())

如果您想要添加多个值,只需调用该方法两次:

bestelling.add(Barcodetext.getText());
bestelling.add(Aantaltext.getText());

答案 3 :(得分:0)

使用:

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

bestelling.addAll(Arrays.asList(..., ...));