多类型排序

我们现在有一些数据,是整数和字符串混杂的。现在需要你将他们分开,并且分别进行排序。 
请你利用泛型实现一个数组类,并且实现排序函数,使得其既可以对Integer类型进行排序,又可以对String类型进行排序。然后利用你实现的这个类完成上面的任务。
输入格式:
一行,一个数字n,表示元素的个数。
n行,每行一个字符串整数,也可以是其他字符串。
输出格式:
n行,前面一部分为输入的整数字符串按从小到大排序输出,后面一部分为非整数字符串按照字典序从小到大输出。
输入样例:
5
12
ab
bd
23
t
输出样例:
12
23
ab
bd
t

package chapter03;

import java.util.Arrays;
import java.util.Scanner;


class MoreArray<T>{
    private T[] array;
    private int index;
    @SuppressWarnings("unchecked")
    public MoreArray(int size){
        array = (T[]) new Object[size];
    }
    public void add(T item){
        array[index++]=item;
    }
    public T[] getArray(){
        return array;
    }
    public int getInt(){
        return index;
    }
    public void sort(){
        /**
         * Arrays.sort()的排序方法,第三个参数为数组的实际的长度
         * 若不指定实际长度,会因为数组中的空元素排序,造成抛出NullPointerException
         */
        Arrays.sort(array, 0, index);
    }
    /**
     * 自定义格式化输出数组
     */
    public String toString(){
        StringBuilder result = new StringBuilder();
        for(T item:array)
            if (item!=null){
            String str = String.valueOf(item)+'\n';
            result.append(str);
            }
        return result.toString();
    }
}


public class test03 {
	public static boolean isNum(String str) {
		for (int i=0;i<str.length();i++){
			if (!Character.isDigit(str.charAt(i))) {
				return false;
			}
		}
		return true;
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner input = new Scanner(System.in);
		int n = Integer.parseInt(input.nextLine().trim());
		MoreArray<Integer> integerArray = new MoreArray<Integer>(n);
		MoreArray<String>  stringArray  = new MoreArray<String>(n);
        for (int i=0;i<n;i++) {
        	String str = input.next();
        	if (isNum(str)) {
        		integerArray.add(Integer.parseInt(str));
        	}
        	else {
        		stringArray.add(str);
        	}
        }
        integerArray.sort();
        stringArray.sort();
        System.out.println(integerArray.toString()+stringArray.toString());
	}


}

猜你喜欢

转载自blog.csdn.net/weixin_42295205/article/details/91300458