亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 java 中使用 RuleBasedCollat??or 設置排序規則面臨困難

在 java 中使用 RuleBasedCollat??or 設置排序規則面臨困難

陪伴而非守候 2022-05-12 17:32:00
我正在嘗試執行以下自動化操作:從已經升序的網頁中獲取字符串值列表。我想確保網頁給定的值升序是否正確。所以我將值存儲在從網頁收集的數組中。從網頁收集值后,我對該數組進行排序,但是在使用 java 代碼排序后,我看不到相同的值以升序排列。這些是我從網站上升后得到的值:_john_tim111115AaaaaaaAI-1AndroidAPIAppNameasdAWSAWSawstestAWSTest1typeAzure在使用 java 集合進行排序后,我得到如下所示: _john    _tim    11    111    5    A   AI-1   API   AWS   AWS  Android  AppName  Azure  aaa  aaa我用來排序的代碼:String rules = "< '_' < 1 < 2 <3 <4 < 5 < A < a";        Collections.sort(myStringArray, new RuleBasedCollator(rules));我可以遺漏上述規則中的任何內容嗎?
查看完整描述

1 回答

?
互換的青春

TA貢獻1797條經驗 獲得超6個贊

這是由于 ASCII 字符集的順序,其中 'Z' 先于 'a'


RuleBasedCollator 僅檢查要排序的字符串的第一個字母。正如您設定的規則是(A < a)。它首先列出所有以大寫字母開頭的字符串,然后是小寫字母。


由于您的列表包含以特殊字符開頭的字符串,我建議創建兩個列表進行排序。一個用于以特殊字符開頭的字符串,然后是包含所有其他值的其他列表。分別對這兩個列表進行排序,然后合并排序后的列表。我已經嘗試了下面的代碼,它工作正常


// Input list

List<String> name = new ArrayList<String>();



    final String[] specialChars = { "_", ">" }; 

    List<String> specCharList = new ArrayList<String>();

    List<String> strList = new ArrayList<String>();

    List<String> finalList = new ArrayList<String>();

    String rules = "< '_' < '>' ";


    boolean isSpec = false ;

    for(String names : name) {

        isSpec = false ;

        for(int i=0;i<specialChars.length;i++) {

            if(names.startsWith(specialChars[i])) {

                // System.out.println("Name : "+names);

                isSpec = true ;

            }

        }  

      // to sort special char list and normal list

       if(isSpec) {

           specCharList.add(names);

       } else {

           strList.add(names);

       }

    }



    try {

        // To sort special character list

        Collections.sort(specCharList, new RuleBasedCollator(rules));

        // Add the sorted list to finallist

        finalList.addAll(specCharList);


        // to sort other list

        Collections.sort(strList, String.CASE_INSENSITIVE_ORDER);

        // Add the sorted list to finallist

        finalList.addAll(strList);


    } catch (ParseException e) {

        // TODO Auto-generated catch block

        e.printStackTrace();

    }


    System.out.println("Final Output List --------");

    for(String names : finalList) {

        System.out.println(names);

    }


查看完整回答
反對 回復 2022-05-12
  • 1 回答
  • 0 關注
  • 176 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號