[英]Java ArrayList get() as Integer rather than Object
Java新手。 试图理解将我的ArrayList
声明为<Integer>
的观点。 我仍然必须在我的方法中将我的.get()
结果作为int
来运行,否则它仍会返回一个Object
。 例如: (int) deliv.get(j)
int Sort方法的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>
函数声明。
static void sort(ArrayList deliv)
您的方法签名请求无类型的ArrayList。 编译器无法知道ArrayList中的内容,因此需要您转换结果。
把它改成这个:
static void sort(ArrayList<Integer> deliv)
现在编译器知道它是一个整数的ArrayList。 所以你不需要添加强制转换为get()
在Java中,Integet是int的包装类。 您不能将int设置为可以使用的ArrayList类型,但是您可以将int类型设置为int类型,它将自动转换为Integer。 为了让你的工作变得更好,你应该这样做:
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(deliv.get(j)> deliv.get(j+1)){ // You should not cast, Integer is Comparable
temp = deliv.get(j+1).intValue();//Changes here
deliv.set(j+1, deliv.get(j).intValue());//And here
deliv.set(j, temp);
}
}
}
}
祝好运
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.