2D字符串数组(带有局部土耳其语字符)在J​​ava中排序 [英] 2D string array(with local Turkish characters) sorting in java

查看:159
本文介绍了2D字符串数组(带有局部土耳其语字符)在J​​ava中排序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个二维的字符串数组,就像:

i have a 2D array of string it is like:

gsdfsdf | awfdsf 
asdasd  | sjd    
çsadsfd | kdjfkj 
bsdmfbs | skfjef 
ıfjdhsb | döjfn  
zewkjf  | skjfkj 
iadsa   | dfjdkj 

我想根据第一列对其进行排序,因为您看到它具有本地(土耳其语)字符,并且在排序之后必须像这样:

i want to sort it according to first column as you see it has local(Turkish) characters, and after sorting it must be like:

asdasd  | sjd    
bsdmfbs | skfjef 
çsadsfd | kdjfkj 
gsdfsdf | awfdsf 
ıfjdhsb | döjfn  
iadsa   | dfjdkj 
zewkjf  | skjfkj 

有任何想法,教程或建议吗?

any idea, tutorial or advice?

推荐答案

应该改进比较器以进行null检查等.但这应该可以工作!

Comparator should be improved for null checking,.. etc. but this should work!

final String alphabet = "0123456789AaBbCcÇçDdEeFfGgĞğHhIıİiJjKkLlMmNnOoÖöPpQqRrSsŞşTtUuÜüVvWwXxYyZz";
SortedMap<String,String> map = new TreeMap(new Comparator<String>() {

        @Override
        public int compare(String o1, String o2) {
            int n = Math.min(o1.length(), o2.length());
            int i=0;
            while((i < n) && (o1.charAt(i) == o2.charAt(i))){
                i++;
            }
            if(i==n){
                return 0;
            }
            if(alphabet.indexOf(o1.charAt(i)) < alphabet.indexOf(o2.charAt(i))){
                return -1;
            }
            return 1;
        }
    });

这篇关于2D字符串数组(带有局部土耳其语字符)在J​​ava中排序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆