Java中增加arrayList中整数的最佳方法
在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<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);
}