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 中有两个元素。1. 列表接口:这不包含任何键。它具有值的集合。您可以通过 add(value) 方法一一添加。2. Map :它为一组值保存一个键。

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

但是,法线Map每个键只能存储一个值。如果要存储多个值,可以使用 a Map<K, List<V>>K键类型和V值类型在哪里),或者您可以使用例如Multimap来自Google Guava的值。

但还有另一个,也许是更好的解决方案。创建一个新类来保存条形码和 anantal,并将该类的实例存储在您的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

您正在尝试调用该方法

list.add(int index, String value)

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

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

Integer.parseInt(Barcodetext.getText())

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

bestelling.add(Barcodetext.getText());
bestelling.add(Aantaltext.getText());
于 2012-04-05T17:51:15.147 回答
0

使用任一:

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

或者

bestelling.addAll(Arrays.asList(..., ...));
于 2012-04-05T18:23:04.550 回答