有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java创建一个可以对字符串/整数数组排序的算法

我试图弄清楚如何制作一个排序函数,它将按降序对数组进行排序

public void dsort(String field) throws DataSetException {
    int front = 0;
    int findex = -1;

    String[] tosort = new String[50];
    for (int i = 0; i < filedata[0].length; i++) {
        if (field.equalsIgnoreCase(filedata[0][i])) {
            findex = i;
        }
    }
    if (findex == -1) {
        throw new DataSetException();
    } else {
        for (int k = 0; k < getNumRecords(); k++) {
            if (filedata[k][findex] != null) {
                tosort[front] = filedata[k][findex];
                front++;
            }
        }
        Comparator comparator = Collections.reverseOrder();
        Arrays.sort(tosort, comparator);
        System.out.println(Arrays.asList(tosort));
    }
}

它的作用是通过从数组数组中获取元素来创建一个新数组,这就是我想要它做的。 但是,我的排序输出是32、3、25、20、2、1000、1等。。 这些“整数”被认为是字符串,这个排序函数也应该能够将单词排序为字符串。我认为我应该尝试使用comparable,但我不确定在这种情况下如何实现它


共 (2) 个答案

  1. # 1 楼答案

    如果所有的东西都是一个数字,那么你不想把它们存储为字符串,存储为数字,然后使用数字排序

    另一方面,如果你有一个字符串的组合,其中一些是数字的,一些是字母的,我建议你使用一些类似字母计算器的东西 here

  2. # 2 楼答案

    使用Google Guava

    List<String> sortedList = Ordering.natural().reverse().onResultOf(new Function<String, Integer>() {
      @Override public Integer apply(String input) {
        return Integer.valueOf(input); // assumes input is always valid
      }
    }).immutableSortedCopy(Iterables.concat(listOfLists));
    

    或者类似的。Iterables.concat将把一个iterable的iterable转换成一个iterable。您可能需要将数组数组转换为列表列表