java中sort()排序可是输出乱码

来源:百度知道 编辑:UC知道 时间:2024/06/09 16:51:30
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;

public class c {

public static void main(String[] args) {
int[] arr = new int[]{654,25,665};
Arrays.sort(arr);
List list = Arrays.asList(arr);
Iterator i = list.iterator();
while(i.hasNext())
{
System.out.println(i.next());
}

为什么不是排序好的数字?

}

}

Arrays.asList
是个泛型的转换,由于你用到的是基本数据类型,所以在做转化的时候虚拟机不知道怎么处理

修改成这样就好了
Integer[] arr = new Integer[]{654,25,665};
Arrays.sort(arr);
List list = Arrays.asList(arr);
Iterator i = list.iterator();
while(i.hasNext()) {
System.out.println(i.next());
}

正如一楼所说的,因为你用到的是基本数据类型,所以在做转化的时候虚拟机不知道怎么处理,这个问题有两个解决方法,一种是一楼所说的把int[] arr = new int[]{654,25,665 改为Integer[] arr = new Integer[]{654,25,665};另一种改法是用JDK5.0 中的增强的for循环输出:
for(Object i:list){
System.out.println(i);
}
增强的for循环在进行迭代时会进行自动的包箱操作,即把int包装成integer类型的再输出。

List list = Arrays.asList(arr);
Iterator i = list.iterator();
while(i.hasNext())
{
System.out.println(i.next());
}
不要这个。直接打印arr应该就是排好的