Java 新手。试图理解声明我的 ArrayList
的意义作为<Integer>
.我还得投我的.get()
结果为 int
在我的方法中让它工作,否则它仍然返回 Object
.例如:(int) deliv.get(j)
int 排序方法的 for
环形。有没有办法避免这种情况或者我的代码是正确的方法?
问题:假设数组可以改变大小,因此不只是使用原始数组。所有数字都应该成对,寻找缺少它的对值的唯一数字。我对数组进行排序,然后循环遍历这些对以查找不匹配项。谢谢。
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;
}
}
最佳答案
当您键入 parameterize ArrayList<Integer>
时编译器知道 ArrayList 中的所有内容都是 Integer
类型并且只允许您添加 Integers
到列表中,因此 get()
返回 Integer
.如果不参数化,编译器将允许您添加任何 Object
到 ArrayList
, 从而调用 get()
将返回 Object
并要求转换为 int
.
要消除强制转换的需要,您需要更改类型为 ArrayList
的参数至 ArrayList<Integer>
在函数声明中。
关于Java ArrayList get() 作为整数而不是对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29794672/