我是Java的新手。试图理解将我的ArrayList
声明为<Integer>
的意义。在我的方法中,我仍然必须将.get()
结果转换为int
才能使其正常工作,否则它仍然返回一个Object
。例如:在Sort方法的for
循环中使用(int) deliv.get(j)
。是否有一种避免这种情况的方法,或者我的代码是正确的方法?
问题:假设数组的大小可以改变,因此不能只使用原始数组。所有数字都应该成对出现,寻找唯一缺失其配对值的数字。我对数组进行排序,然后循环遍历这些数对以查找不匹配项。谢谢。
import java.util.*;
class StolenDrone{
public static void main(String[] args){
ArrayList<Integer> deliv_id = new ArrayList<>();
deliv_id.add(99);
deliv_id.add(13);
deliv_id.add(4);
deliv_id.add(5);
deliv_id.add(8);
deliv_id.add(99);
deliv_id.add(8);
deliv_id.add(5);
deliv_id.add(4);
System.out.println("Array is: " + deliv_id);
sort(deliv_id);
System.out.println("Array is: " + deliv_id);
int unique = findUnique(deliv_id);
System.out.println("Unique ID is: " + unique);
}
//Sort ArrayList into increasing order
static void sort(ArrayList deliv){
int temp;
for(int i = 0; i<deliv.size();i++){
for (int j=0; j<deliv.size()-1;j++){
if((int) deliv.get(j)> (int) deliv.get(j+1)){
temp = (int) deliv.get(j+1);
deliv.set(j+1, deliv.get(j));
deliv.set(j, temp);
}
}
}
}
//check pairs in ArrayList to find unique entry
static int findUnique(ArrayList deliv){
for(int i = 0; i<deliv.size()-1;i+=2){
if(deliv.get(i) == null){
return -1; //no unique
}
if((int) deliv.get(i) != (int) deliv.get(i+1)){
return (int) deliv.get(i);
}
}
return -1;
}
}
ArrayList<Integer>
会使得get()
返回Integer; 由于Integer和int不同,因此需要进行“强制转换”。 - GhostCat