Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中增加arrayList中整数的最佳方法_Java_Arraylist_Integer - Fatal编程技术网

Java中增加arrayList中整数的最佳方法

Java中增加arrayList中整数的最佳方法,java,arraylist,integer,Java,Arraylist,Integer,在ArrayList中增加整数最干净的方法是什么 ArrayList<Integer> ints = new ArrayList<>(); ints.add(5); ints.add(9); ArrayList ints=new ArrayList(); 加入(5); 内加(9); 增加最后一个元素的最干净方法是什么 ints.set(ints.size()-1,ints.get(ints.size()-1)+1)在我看来非常难看。由于Integer对象是不可变的,所

在ArrayList中增加整数最干净的方法是什么

ArrayList<Integer> ints = new ArrayList<>();
ints.add(5);
ints.add(9);
ArrayList ints=new ArrayList();
加入(5);
内加(9);
增加最后一个元素的最干净方法是什么


ints.set(ints.size()-1,ints.get(ints.size()-1)+1)在我看来非常难看。

由于
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

或者,使用可变整数类型,如(或编写自己的)。

可能需要使用另一种数据结构

LinkedList<AtomicInteger> ints = new LinkedList<AtomicInteger>();
ints.add(new AtomicInteger(5));
ints.add(new AtomicInteger(9));

ints.getLast().incrementAndGet();
LinkedList ints=new LinkedList();
整数加(新的原子整数(5));
整数加(新的原子整数(9));
ints.getLast().incrementAndGet();

我做过这样的事情:

arraylistofint.set(index, arraylistofint.get(index) + 1);
下面是我的代码示例(修改后的名称):

ArrayList numBsPerA=newarraylist();
...
int-cntAs=0;
int-cntBs=0;
用于(a型:AnArrayListOfAs)
{
numBsPerA.add(0);
对于(TypeB:a.getAnArrayListOfBs())
{
numBsPerA.set(cntAs,numBsPerA.get(cntAs)+1);
cntBs++;
}
System.out.println(a.toString()+“has”
+numBsPerA.get(cntAs)+“TypeBs”);
cntAs++;
}
System.out.println(“As总数:+CNTA”);
System.out.println(“基站总数:+CNTB”);
//现在可以在numBsPerA上循环检查每个A有多少个B或其他。

我可以通过使用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);
  }
List List=new ArrayList();
//int[]primitive=List1.toArray(List1);
整数计数=0;
int count1=0;
int k=0;
增加(3);增加(2);增加(3);增加(5);
System.out.println(“给定输入为”);
用于(int i:列表){
系统输出打印LN(i);
}
整数[]a=list.toArray(新整数[list.size()]);

对于(int i=0),它是相当丑陋的,但是很多java是这样的。我会考虑用一种方法来封装它,这样你的主线代码就不会杂乱。我在这个DaveNewton上使用了@。我看不出更好的方法,但是我会用可读性/测试稳定性的方法来封装它。int LaSTeCase= int()(1);int LasValue= int。(lastIndex,lastValue+1);即使AtomicInteger没有自动装箱功能。使用linkedList和atomic integer可以使代码更干净,但编码不仅仅是为了美观。为什么使用atomic*是因为它不涉及并发性问题。这是不必要的开销。不同的数据结构用法应该基于用例,而不是外观。当您处理一个小项目时-我同意你的看法。当你有一个由400-500名开发人员组成的团队时……可读性和可支持性成为最重要的事情。使用标准结构是必要的,即使这意味着“开销”。
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);
  }