在Java中使用arrayList增加Integer的最佳方法

时间:2014-11-29 18:01:07

标签: java arraylist integer

在ArrayList中递增Integer的最简洁方法是什么?

ArrayList<Integer> ints = new ArrayList<>();
ints.add(5);
ints.add(9);

增加最后一个元素的最简洁方法是什么?

ints.set(ints.size() - 1, ints.get(ints.size() - 1) + 1);对我来说似乎很难看。

4 个答案:

答案 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);
  }

我也算了...

这个问题也在一次采访中问到了。