我正在尝试将多个值放在一个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)不适用
答案 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(..., ...));