1. 程式人生 > >TreeSet 實際運用中的補坑

TreeSet 實際運用中的補坑

1.TreeSet是一種不可重複,有序的資料集合,可是TreeSet中的有序是自然排序的,0-9|a-z

問題:現在需要先進先出並且去重,而不是按照自然排序

解決方法:加入ArrayList ,Set中的add返回值是一個boolean型別,可以此為判斷依據新增值進list中

/**
     * 去除集合中重複的資料和規則並有序排列
     * @param seowords
     * @return
     */
    public static String noRepeat(String[] seowords ){
        StringBuilder sb = new StringBuilder();
        if(seowords.length <=0){
            return null;
        }else{
            List<String> seoLists = new ArrayList<String>();


            TreeSet<String> seoSets = new TreeSet<String>();
            for(int q=0; q<seowords.length;q++){
                String seo = seowords[q].toLowerCase().replaceAll("雙4G版|LTE版|全網通版|手機|全面屏|高配版|大屏版|頂配版|RAM", "")
                        .replaceAll("(移動|聯通|電信)\\d*(G|g)*版*", "")
                        .replaceAll("\\d+(G|g)版", "").replaceAll("\\d+GB", "").replaceAll("\\(*\\)*\\(*\\)\\/*", "").trim();
                if(seo != null && !"".equals(seo)){
                    if(seoSets.add(seo+";")){
                        seoLists.add(seo+";");
                    }

                }else{
                    continue;
                }
                if(seoSets.size() ==10){
                    break;
                }
            }
            
            for(String s : seoLists){
                sb.append(";".equals(s)?"":s.replace(";,", ";"));
            }
            return sb.length() < 1 ? "" :sb.toString().substring(0,sb.length()-1);
        }
        
    }