import java.util.Collections;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
public final class Demo {
/*****************************************************************************
Description : 实现整数排序,即先将从A输入的整型数序列进行排序,剔除重复整型数,输出得到的升序序列B;
Input       : array_A                 输入参数,输入待排序整型数序列A
Return      : 排序后的整型数序列
*****************************************************************************/
public static int[] sort(int []array_A)
{
if(array_A.length==0)
return null;

List<Integer> list=new LinkedList<Integer>();
for(int i=0;i<array_A.length;i++){
list.add(array_A[i]);
}
//排序
Collections.sort(list);

//去重
Iterator<Integer> i=list.iterator();
int x=0;
if(i.hasNext()){
x=i.next();
}
int y=0;
while(i.hasNext()){
y=i.next();
if(x==y){
i.remove();
}else{
x=y;
}
}

//将list转为int数组
    int[] array_B=new int[list.size()];
    int index=0;
    Iterator<Integer> j=list.iterator();
    while(j.hasNext()){
     array_B[index++]=j.next();
    }
    return array_B;
}
}经过测试案例检查,5个通过,一个异常,因为看不到测试案例,不知道错误出在哪里。

解决方案 »

  1.   


        public static int[] sort(int[] array_A) {
            if (array_A.length == 0) {
                return null;
            }
            Set<Integer> set = new TreeSet<Integer>();
            for (int i = 0; i < array_A.length; i++) {
                set.add(array_A[i]);
            }
            int[] array_B = new int[set.size()];
            int index = 0;
            for (Integer i: set) {
                array_B[index++] = i;
            }
            return array_B;
        }
      

  2.   


    把x=i.next(); 换成 x=i.next().intValue();
      y=i.next(); 换成 y=i.next().intValue();
    试试
      

  3.   

    谢谢!其实是没有判断array_A是否为null学习2楼的方法了。