2014-11-10 1 views
0

Я взял значение из своей базы данных и поместил его в набор результатов и отобразил его в JTable, но перед вами стоит проблема сортировки, которая является моим основным ключом, например. A1, A2, A3 .... A10, A11. Но в моем JTable этот столбец первичного ключа отображается некорректно.Как отсортировать значение String из базы данных (первичный ключ) как целое в таблице?

A11 A10 A1 A2 A3 A4

A11 должен быть на last.Is в любом случае, чтобы решить эту проблему ??

+0

Это может помочь вам. [http://stackoverflow.com/questions/4379592/how-can-i-sort-resultset-in-java][1] [1]: HTTP: // StackOverflow. com/questions/4379592/how-can-i-sort-resultset-in-java –

ответ

1

Strings упорядочены в алфавитном порядке по умолчанию. Вам необходимо реализовать свой собственный Comparator<String>.

Try ниже компараторе

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; 

    } 
} 

Run с входом

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] 
+0

Спасибо, это решило мою проблему. Я реализовал этот код в пользовательский компаратор и поместил его в сортировщик для своей таблицы. Он отлично работает. –

0

Я думаю, что вы можете написать обычай Comparator для вашего стола.

0

Вы можете попробовать @Alex Suo для создания пользовательского Comparator или обновить A1, A2 до A01, A02 перед вставкой в ​​базу данных.

Arrays.sort() работает довольно хорошо для A01, A02:

String[] strArr = {"A05", "A10", "A02", "A23", "A11"}; 
    Arrays.sort(strArr); 
    for(String s:strArr) { 
     System.out.print(s + " "); 
    } 

Выход: A02, A05, A10, A11, A23,

0

Вы можете сделать так

List values = Arrays.asList("A11","B1","A9", "Z9", "Z1", "A10", "A1", "A2", "A3", "A4"); 
    System.out.println(values); 
    Collections.sort(values,new SampleComparator()); 
    System.out.println(values); 

Ваш класс компаратор ниже

class SampleComparator implements Comparator<String>{ 

    @Override 
    public int compare(String o1, String o2) 
    { 
     String[] ob1 =o1.split("(?<=[\\w&&\\D])(?=\\d)"); 
     String[] ob2 =o2.split("(?<=[\\w&&\\D])(?=\\d)"); 
     if(!ob1[0].equals(ob2[0])){ 
      return ob1[0].compareTo(ob2[0]); 
     } 
     Integer num1 = Integer.parseInt(ob1[1]); 
     Integer num2 = Integer.parseInt(ob2[1]); 
     return num1.compareTo(num2); 
    }   
} 

Выход

[A11, B1, A9, Z9, Z1, A10, A1, A2, A3, A4] 
[A1, A2, A3, A4, A9, A10, A11, B1, Z1, Z9]