java - 如何将从数据库(主键)获取的字符串值排序为表中的整数?

标签 java database user-interface jtable resultset

我已经从我的数据库中获取值并将其放入结果集中并将其显示在 JTable 中,但我面临一些排序问题,这是我的主键,例如A1,A2,A3 ....A10,A11。但是在我的JTable中,该主键列显示不正确。

A11 A10 A1 A2 A3 A4

A11应该在最后。有办法解决这个问题吗?

最佳答案

Strings默认情况下按字母顺序排序。您需要实现自己的Comparator<String> .

尝试下面的比较器

public class CustomComparator implements Comparator<String> {

    @Override
    public int compare(String str1, String str2) {

        int num1 = Integer.parseInt(str1.substring(1,str1.length()));
        int num2 = Integer.parseInt(str2.substring(1, str2.length()));

        return num1 - num2;

    }
}

使用您的输入运行

public static void main(String[] args) {
    String[] a = {"A11","A10", "A1" ,"A2", "A3", "A4"};

    Arrays.sort(a,new CustomComparator());
    System.out.println(Arrays.asList(a).toString());
}

输出

[A1, A2, A3, A4, A10, A11]

关于java - 如何将从数据库(主键)获取的字符串值排序为表中的整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26840220/

相关文章:

java - 为什么我有时会在 Eclipse 快速修复中得到 <?> 通配符

java - 为什么这不会绘制图像?

java - 用j2me中的字符串替换字符串

mysql - 如何加快MySQL查询

Android parse.com 我无法从数据库获取第二个用户

cocoa - 使用 Mac OS X Cocoa 绘制文本时如何重现插入文本样式?

java - JButton 以编程方式显示工具提示 : actionMap. get ("postTip") 为空

java - 如何使用android sqlite数据库更新一行中的多列?

qt - Qt Fresh Gui应用程序在启动时崩溃,并在QtCore4.dll上出错

python - 在两个 kivy 屏幕中添加两个值并得到结果