使用 ascii 码对 String 类型进行二分查找

/**
     * 字符串进行排序
     * @param list
     * @param start
     * @param end
     * @param targen
     * @return
     */
    public static int seek(List<Map<String, Object>> list,int start,int end,String targen) {
        int index = (start + end) / 2;
        // 判断需要 查找的值 在不在数组里面
        if(toAscii(targen)>toAscii(list.get(end).get("key").toString())
            ||toAscii(targen)<toAscii(list.get(start).get("key").toString())
            ||start>end) {
            return -1; //不在返回 -1 ;
        }
        
        if(toAscii(targen)>toAscii(list.get(index).get("key").toString())) {
            return seek(list,index + 1,end,targen);
        }else if(toAscii(targen)<toAscii(list.get(index).get("key").toString())){
            return seek(list,start,index-1,targen);
        }else {
            return index;
        }
        
    }

/**
     * 将字符串转化成  ascii 码
     * @param targen 需要转化的字符串
     * @return
     */
    public static int  toAscii(String targen) {
        char[] chars = targen.toCharArray();
        String asiic = "";
        for(char as : chars) {
            asiic += (byte)as +"";
        }
        return Integer.parseInt(asiic);
    }

//调用示例

public static void main(String[] args) {
        
        int a = (int)'a';
        System.out.println(a);
        
        List<Map<String, Object>> list = new ArrayList<Map<String,Object>>();
        Map<String, Object> map1 = new HashMap<String,Object>();
        map1.put("key", "abc");
        list.add(map1);
        
        Map<String, Object> map2 = new HashMap<String,Object>();
        map2.put("key", "abd");
        list.add(map2);
        
        Map<String, Object> map3 = new HashMap<String,Object>();
        map3.put("key", "abf");
        list.add(map3);
        
        Map<String, Object> map4 = new HashMap<String,Object>();
        map4.put("key", "abh");
        list.add(map4);
        
        Map<String, Object> map5 = new HashMap<String,Object>();
        map5.put("key", "abg");
        list.add(map5);
        
        System.out.println(seek(list,0,list.size()-1,"abf"));
        System.out.println(list.get(seek(list,0,list.size()-1,"abf")).get("key").toString());
        
    }    

猜你喜欢

转载自my.oschina.net/u/3744526/blog/1818574