sqlite不支持中文排序,采用java排序

前端之家收集整理的这篇文章主要介绍了sqlite不支持中文排序,采用java排序前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

方式一

@H_301_3@不支持含有重复字段进行排序

/** * sqlite不支持中文排序,改用java排序 * 根据指定的对象属性字段,排序对象集合,顺序 * @param list * @param field * @return */
    public static List sortListByField(List<?> list,String field){
        List temp = new ArrayList();
        try{
            List<String> fields = new ArrayList<String>();
            for(Object obj:list){
                fields.add(getFieldValueByName(field,obj).toString());
            }
            Collections.sort(fields,Collator.getInstance(java.util.Locale.CHINA));
            for(String name:fields){
                for(Object o:list){
                    if(name.equals(getFieldValueByName(field,o).toString())){
                        temp.add(o);
                    }
                }
            }
        }catch(Exception ex){
            ex.printStackTrace();
        }
        return temp;
    }
/** * 根据属性获取属性值 * @param fieldName * @param o * @return */
    private static Object getFieldValueByName(String fieldName,Object o) {
        try {
            String firstLetter = fieldName.substring(0,1).toUpperCase();
            String getter = "get" + firstLetter + (fieldName.substring(1));
            Method method = o.getClass().getMethod(getter,new Class[] {});
            Object value = method.invoke(o,new Object[] {});
            return value;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
/** * 获取属性名数组 * @param o * @return */
    private String[] getFiledName(Object o) {
        Field[] fields = o.getClass().getDeclaredFields();
        String[] fieldNames = new String[fields.length];
        for (int i = 0; i < fields.length; i++) {
            System.out.println(fields[i].getType());
            fieldNames[i] = (fields[i].getName());
        }
        return fieldNames;
    }
@H_301_3@参考:http://www.jb51.cc/article/p-rruqvifg-oe.html

方式二

@H_301_3@支持含有重复字段进行排序

/** * sqlite不支持中文排序,改用java排序 * 根据指定的对象属性字段,排序对象集合,顺序 * @param list * @param field * @return */
    public static List sortListByField(List<?> list,String field){
        List temp = new ArrayList();
        try{
            List<String> fields = new ArrayList<String>();
            int len = list.size();
            for(int i=0;i<len;i++){
                Object obj = list.get(i);
                fields.add(getFieldValueByName(field,obj).toString()+"@"+i);
            }
            Collections.sort(fields,Collator.getInstance(java.util.Locale.CHINA));


            for(String name:fields){
                String location = name.substring(name.lastIndexOf("@")+1);
                int index = Integer.parseInt(location);
                temp.add(list.get(index));
            }
        }catch(Exception ex){
            ex.printStackTrace();
        }
        return temp;
    }
原文链接:https://www.f2er.com/sqlite/198592.html

猜你在找的Sqlite相关文章