JAVA递归

来源:互联网 发布:weka apriori算法 编辑:程序博客网 时间:2024/06/07 07:06
public  static  StringBuilder  recursonSolr(HashMap<String,Object> hashMap){    String operator = "";    Set<String> sets=hashMap.keySet();    if (sets.contains("AND") || sets.contains("OR")) {        operator =hashMap.keySet().iterator().next();        System.out.println("xxxxxxxxxxxxxxxxx"+operator);        StringBuilder stringBuilder1 = new StringBuilder();        stringBuilder1.append("(");        HashMap<String,Object> map= (HashMap<String, Object>) hashMap.get(operator);        for (String key:map.keySet()) {            //递归............            StringBuilder stringBuilder2=new StringBuilder();            String value="";            if (map.get(key) instanceof HashMap){                value = recursonSolr((HashMap<String,Object>)map.get(key)).toString();            }else{                value=stringBuilder2.append(key).append(":").append(map.get(key)).toString();            }            stringBuilder1.append(value);            stringBuilder1.append(" " + operator + " ");        }        stringBuilder1.delete(stringBuilder1.length()-4,stringBuilder1.length());        stringBuilder1.append(")");        return stringBuilder1;    } else {        StringBuilder stringBuilder = new StringBuilder();        Set<String> set=hashMap.keySet();        stringBuilder.append("(");        for(String key:set){            stringBuilder.append(key).append(":").append(hashMap.get(key)).append(" AND ");        }        stringBuilder.delete(stringBuilder.length()-4,stringBuilder.length());        stringBuilder.append(")");        return  stringBuilder;    }}

测试:
 HashMap<String,Object> map=new HashMap<String, Object>(); HashMap<String,Object> map_and=new HashMap<String, Object>(); HashMap<String,Object> map1=new HashMap<String, Object>(); HashMap<String,Object> map_and1=new HashMap<String, Object>(); HashMap<String,Object> map2=new HashMap<String, Object>(); HashMap<String,Object> map_and2=new HashMap<String, Object>(); map.put("key","value"); map.put("key1","value1"); map_and.put("AND",map); map1.put("key3","value3"); map1.put("key4",map_and); map_and1.put("OR",map1); map2.put("key5",map_and1); map2.put("key6","value6"); map_and2.put("AND",map2);StringBuilder stringBuilder= recursonSolr(map_and2);System.out.println(stringBuilder.toString());
备注:
不传AND或者OR,则默认为AND

                                             
0 0
原创粉丝点击