Java 修改arraylist编码问题中的项目
我正在尝试更改arraylist中项目的值。我好像没法让它工作。我不知道如何真正问这个问题。代码非常广泛(或者至少在我的书中是这样),所以我无法真正展示所有代码。但是,如果我知道当前索引,如何使其更改ItemNameJava 修改arraylist编码问题中的项目,java,netbeans,arraylist,Java,Netbeans,Arraylist,我正在尝试更改arraylist中项目的值。我好像没法让它工作。我不知道如何真正问这个问题。代码非常广泛(或者至少在我的书中是这样),所以我无法真正展示所有代码。但是,如果我知道当前索引,如何使其更改ItemName currentIndex.setItemName(newItemName); CurrentIndex是一个int,它告诉我所处的索引,ItemName是arraylist中的字符串。我应该在尝试设置之前获取ItemName吗?像这样的 InventoryItem.getIte
currentIndex.setItemName(newItemName);
CurrentIndex是一个int,它告诉我所处的索引,ItemName是arraylist中的字符串。我应该在尝试设置之前获取ItemName吗?像这样的
InventoryItem.getItemName();
currentIndex.setItemName(newItemName);
这也不起作用
编辑:我被要求显示更多的代码。这是我的动作监听器中弹出的面板
modifyButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JTextField xField = new JTextField(15);
JTextField yField = new JTextField(15);
JTextField zField = new JTextField(15);
JPanel myPanel = new JPanel();
myPanel.add(new JLabel("Item Name:"));
myPanel.add(xField);
myPanel.add(Box.createVerticalStrut(15)); // a spacer
myPanel.add(new JLabel("Number in inventory:"));
myPanel.add(yField);
myPanel.add(Box.createVerticalStrut(15)); // a spacer
myPanel.add(new JLabel("Unit Price:"));
myPanel.add(zField);
int result = JOptionPane.showConfirmDialog(null, myPanel,
"Please Enter data into all boxes", JOptionPane.OK_CANCEL_OPTION);
if (result == JOptionPane.OK_OPTION) {
String newItemName = String.valueOf(xField);
String text1 = yField.getText();
String newInventoryAmount = String.valueOf(text1);
int newAmount = Integer.parseInt(newInventoryAmount);
String text2 = zField.getText();
String newUnitPrice = String.valueOf(text2);
double newPrice = Double.parseDouble(newUnitPrice);
inventory.get(currentIndex).setItemName(newItemName);
inventory.get(currentIndex).setInStock(newAmount);
inventory.get(currentIndex).setUnitPrice(newPrice);
}
}
}
);
ìnt
没有方法setItemName
(或者任何方法,因为它是一个原语,而不是一个对象)
尝试yourarylist.get(currentIndex.setItemName(newItemName)代码>
它对列表中所需的元素调用setItemName
编辑:要解决新问题,请替换String newItemName=String.valueOf(xField)代码>带有
String newItemName = xField.getText();
我相信这就是你想要做的。ìnt
没有方法setItemName
(或者任何方法,因为它是原语,而不是对象)
尝试yourarylist.get(currentIndex.setItemName(newItemName)代码>
它对列表中所需的元素调用setItemName
编辑:要解决新问题,请替换String newItemName=String.valueOf(xField)代码>带有
String newItemName = xField.getText();
我相信这就是您想要做的。list.set(index,newItemName)
,E)list.set(索引,newItemName)
,E)我不确定你的ArrayList是什么名字,所以我就叫它ArrayList
试一试
arrayList.get(currentIndex)
调用列表中当前索引处的元素
这允许您使用.setItemName(newItemName)
更改对象的名称。我不确定您的ArrayList是什么名称,所以我将其命名为ArrayList
试一试
arrayList.get(currentIndex)
调用列表中当前索引处的元素
这允许您使用.setItemName(newItemName)
更改对象的名称。请查看此代码,它完成了我认为您正在尝试的操作
public class Test {
public static void main(String args[]){
ArrayList<Employee> myArrayList = new ArrayList<Employee>();
Employee e1 = new Employee();
e1.setName("Juan");
myArrayList.add(e1);
myArrayList.get(0).setName("Jhon");
System.out.println(myArrayList.get(0).getName());
}
}
class Employee {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
公共类测试{
公共静态void main(字符串参数[]){
ArrayList myArrayList=新建ArrayList();
员工e1=新员工();
e1.设定名称(“胡安”);
myArrayList.add(e1);
myArrayList.get(0.setName(“Jhon”);
System.out.println(myArrayList.get(0.getName());
}
}
班级员工{
私有字符串名称;
公共字符串getName(){
返回名称;
}
公共void集合名(字符串名){
this.name=名称;
}
}
查看这段代码,它完成了我认为您正在尝试的操作
public class Test {
public static void main(String args[]){
ArrayList<Employee> myArrayList = new ArrayList<Employee>();
Employee e1 = new Employee();
e1.setName("Juan");
myArrayList.add(e1);
myArrayList.get(0).setName("Jhon");
System.out.println(myArrayList.get(0).getName());
}
}
class Employee {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
公共类测试{
公共静态void main(字符串参数[]){
ArrayList myArrayList=新建ArrayList();
员工e1=新员工();
e1.设定名称(“胡安”);
myArrayList.add(e1);
myArrayList.get(0.setName(“Jhon”);
System.out.println(myArrayList.get(0.getName());
}
}
班级员工{
私有字符串名称;
公共字符串getName(){
返回名称;
}
公共void集合名(字符串名){
this.name=名称;
}
}
您的阵列列表的名称是什么?
?我还尝试了类似inventory.set(itemName=newItemName)的方法代码>但似乎找不到itemName。我认为这是因为它在一个单独的类中?publicstaticarrarylist inventory=newarraylist()
您的ArrayList的名称是什么
?我还尝试了类似于inventory.set(itemName=newItemName)的方法代码>但似乎找不到itemName。我认为这是因为它在一个单独的类中?publicstaticarrarylist inventory=newarraylist()
set
更改对象引用,在不替换的情况下对列表中的对象进行变异是不好的。但是他说字符串在他的数组列表中,他正在尝试更改它。字符串是不可变的,所以唯一的方法是在列表中设置它。字符串不可变并不意味着不能替换对象中的字符串引用。这就是set所做的。。。。他说他的列表直接包含字符串,所以他没有要修改的对象。没关系,我刚看到他的评论,他确实有一个要设置名称的对象:)set
更改对象引用,在不替换的情况下对列表中的对象进行变异是不好的。但是他说字符串在他的数组列表中,他正在尝试更改它。字符串是不可变的,所以唯一的方法是在列表中设置它。字符串不可变并不意味着不能替换对象中的字符串引用。这就是set所做的。。。。他说他的列表直接包含字符串,所以他没有要修改的对象。没关系,我刚刚看到他的评论,他确实有一个要设置名称的对象:)这看起来很混乱。也许就叫它arrayList吧。是的,至少给它一个理论上正确的名字。这看起来很混乱。也许就叫它arrayList。是的,至少给它一个理论上正确的名称。这是可行的,但当我看新值时,它会说Item name=javax.awing.JTextField(…并且似乎没有实际改变它。现在就像一个符咒一样工作!谢谢这项工作,但是当我看到新值时,它说Item Name=javax.awing.JTextField(…并且似乎没有实际改变它。现在就像一个符咒一样工作!谢谢