在ArrayList中递增Integer的最简洁方法是什么?
ArrayList<Integer> ints = new ArrayList<>();
ints.add(5);
ints.add(9);
增加最后一个元素的最简洁方法是什么?
ints.set(ints.size() - 1, ints.get(ints.size() - 1) + 1);
对我来说似乎很难看。
答案 0 :(得分:13)
由于Integer
对象是不可变的,因此您无法增加该值。您必须在ArrayList
中的特定位置获取先前的值,增加该值,并使用它来替换该位置中的旧值。
int index = 42; // whatever index
Integer value = ints.get(index); // get value
value = value + 1; // increment value
ints.set(index, value); // replace value
或者,使用可变整数类型,如AtomicInteger
(或编写自己的)。
答案 1 :(得分:7)
也许你需要使用另一种数据结构?
LinkedList<AtomicInteger> list = new LinkedList<AtomicInteger>();
ints.add(new AtomicInteger(5));
ints.add(new AtomicInteger(9));
list.getLast().incrementAndGet();
答案 2 :(得分:1)
I have done something like this:
arraylistofint.set(index, arraylistofint.get(index) + 1);
here is an example from my code (modified names):
ArrayList<Integer> numBsPerA = new ArrayList<> ();
...
int cntAs = 0;
int cntBs = 0;
for ( TypeA a : AnArrayListOfAs )
{
numBsPerA.add(0);
for ( TypeB b : a.getAnArrayListOfBs() )
{
numBsPerA.set(cntAs, numBsPerA.get(cntAs) + 1);
cntBs++;
}
System.out.println(a.toString()+ " has "
+numBsPerA.get(cntAs)+" TypeBs");
cntAs++;
}
System.out.println("Total number of As: "+cntAs);
System.out.println("Total number of Bs: "+cntBs);
// can now loop over numBsPerA to check how many Bs per A or whatever.
答案 3 :(得分:0)
我可以使用java通过代码完成... ...我们可以增加列表的每个元素
List<Integer> list= new ArrayList<Integer>();
//int[] primitive = List1.toArray(list1);
int count=0;
int count1=0;
int k=0;
list.add(3);list.add(2);list.add(3);list.add(5);
System.out.println("The given input is");
for(int i:list){
System.out.println(i);
}
Integer[] a = list.toArray(new Integer[list.size()]);
for(int i = 0; i <a.length; i++)
{
if(i==a.length-1){
a[i]++;
count++;
}else if(i==a.length-2){
a[i]++;
count++;
}else if(i==a.length-3){
a[i]++;
count++;
}else if(i==a.length-4){
a[i]++;
count++;
}
}
System.out.println("After first operation");
for(int i:a){
System.out.println(i);
}
System.out.println("the first count is"+count);
for(int i = 0; i <a.length; i++)
{
if(i==a.length-1){
a[i]--;
count1++;
}else if(i==a.length-2){
a[i]--;
count1++;
}else if(i==a.length-3){
a[i]--;
count1++;
}else if(i==a.length-4){
a[i]--;
count1++;
}
}
for(int i:a){
System.out.println(i);
}
System.out.println("the second count is"+count1);
//int Count2=count+count1;
System.out.println("After second operation");
System.out.println("--------------------------------------------");
for(int j:a){
System.out.println(j);
}
List<Integer> list1=Arrays.asList(a);
System.out.println("After conversion of list");
for(int i:list1){
System.out.println(i);
}
我也算了...
这个问题也在一次采访中问到了。