[英]How to change value of a specific element in an ArrayList?
所以这里我有一个数字数组,我只想更改特定索引的值。
ArrayList <Integer> numbers = new ArrayList <> ();
numbers.add(5);
numbers.add(10);
numbers.add(20);
我试图做类似userNumbers.get(1 (* 3));
事情userNumbers.get(1 (* 3));
其中1
应该是索引,我将该索引中的值乘以 3,因此结果为30
因为10
是第一个索引。 尝试搜索,但我没有运气!
尽可能参考 Java 文档。 这特别。
numbers.set(1, numbers.get(1) * 3);
就个人而言,我认为这是因为“Integer”是一个不可变类,这意味着您不能使用其成员方法更改不可变对象的值。
如果将 Integer、Long、Float、Double、Boolean、Short、Byte、Character、String 等不可变类放入列表中,则无法立即更改值。
但是,如果您将自定义对象放入列表中,则可以更改该值。
演示代码:
public class RRR {
public static void main(String[] args) {
ArrayList <Hi> hiList = new ArrayList <> ();
Hi hi1 = new Hi("one");
Hi hi2 = new Hi("two");
Hi hi3 = new Hi("three");
hiList.add(hi1);
hiList.add(hi2);
hiList.add(hi3);
Hi hix = hiList.get(0);
hix.setName("haha");
System.out.println(hiList.get(0).getName()); // changed from "one" to "haha"
}
}
class Hi {
public Hi(String name) {
this.name = name;
}
private String name;
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
}
看? 类 Hi 不是 Immutable ,您可以使用“setName”更改此值
回到问题,改变这个Integer对象,可以:
我编写了一个静态方法来进行更改,您也可以将此方法添加到 ArrayList 类中。 正如您在帖子中所说的那样,这会将元素乘以 3:
public static void main(String[] args) {
ArrayList<Integer> numbers = new ArrayList<>();
numbers.add(5);
numbers.add(10);
numbers.add(20);
System.out.println(numbers.get(2)); //before
changeList(numbers, 2);
System.out.println(numbers.get(2)); //After!
}
//This method will take in the list, and the element number
static void changeList(ArrayList<Integer> arrayList, int elementNum) {
int temp = arrayList.get(elementNum);
arrayList.remove(elementNum); //remove it
int newValue = temp * 3; //do anything you want here to the data
arrayList.add(elementNum, newValue); //place the value back in the arrayList
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.