所以这里我有一个数字数组,我只想更改特定索引的值。
ArrayList <Integer> numbers = new ArrayList <> ();
numbers.add(5);
numbers.add(10);
numbers.add(20);
我试图做类似的事情
userNumbers.get(1 (* 3));
,其中1
应该是索引,并且我将该索引中的值乘以3,因此由于30
是第一个索引,因此将得出10
。试图搜寻,但对我没有好运!
答案 0 :(得分:4)
请尽可能参考Java文档。尤其是This。
numbers.set(1, numbers.get(1) * 3);
答案 1 :(得分:1)
我个人认为这是因为“ Integer”是一个不可变的类,这意味着您无法使用其成员方法更改不可变对象的值。
如果将Integer,Long,Float,Double,Boolean,Short,Byte,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类不是不可变的,您可以使用“ setName”更改此值
回到问题,更改此Integer对象,您可以:
答案 2 :(得分:1)
我写了一个静态方法来进行更改,您也可以将此方法添加到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
}