gpt4 book ai didi

java - 关于数组概念

转载 作者:行者123 更新时间:2023-12-04 05:47:48 25 4
gpt4 key购买 nike

我正在寻求建议,因为在运行以下代码时出现错误:

public class Test9 {


public static void main(String[] args) {

Object [] myObjects = {
new Integer(12),
new String("foo"),
new Integer(5),
new Boolean(true)
};
Arrays.sort(myObjects);
for(int i=0; i<myObjects.length; i++) {
System.out.print(myObjects[i].toString());
//System.out.print(" ");
}

}

}

我得到的错误是:
   Exception in thread "main" java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
at java.lang.Integer.compareTo(Unknown Source)
at java.util.Arrays.mergeSort(Unknown Source)
at java.util.Arrays.sort(Unknown Source)
at Practicequestions.Test9.main(Test9.java:18)

最佳答案

 Object [] myObjects = {
new Integer(12),
new String("foo"),
new Integer(5),
new Boolean(true)
};

这是一个泛型类型数组。因此,当您尝试使用 public static void sort(Object[] a) 对其进行排序时它填充运行时 ClassCastException 原因数组包含不可相互比较的元素。

Array.sort() 指定数组对象按升序排列,按照其元素的自然顺序排列。
还有另一种方法可以使用它 sort(Object[] a,Comparator c) .用你自己的逻辑实现 Comparator 并传递它。
Object[] myObjects = { new Integer(12), new String("foo"),
new Integer(5), new Boolean(true) };
Comparator<Object> comparator=new Comparator<Object>() {
@Override
public int compare(Object obj1, Object obj2) {
if(obj1 instanceof String && obj2 instanceof String){
return String.valueOf(obj1).compareTo(String.valueOf(obj2));
}else if(obj1 instanceof Integer && obj2 instanceof Integer){
return ((Integer) obj1).compareTo((Integer) obj2);
}else if(obj1 instanceof Boolean && obj2 instanceof Boolean){
return ((Boolean) obj1).compareTo((Boolean) obj2);
}else if(obj1 instanceof String && obj2 instanceof Integer){
return 1;
}else if(obj1 instanceof Integer && obj2 instanceof String){
return -1;
}else if(obj1 instanceof Boolean){
return -1;
}else if( obj2 instanceof Boolean){
return 1;
}
return 0;
}
};
Arrays.sort(myObjects,comparator);
for (int i = 0; i < myObjects.length; i++) {
System.out.print(myObjects[i].toString());
}

关于java - 关于数组概念,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10459183/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com