程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> collections-Android Collections排序相關問題(難道就沒人會了嗎???)

collections-Android Collections排序相關問題(難道就沒人會了嗎???)

編輯:編程綜合問答
Android Collections排序相關問題(難道就沒人會了嗎???)

#下面代碼Collections中如何根據照片的經緯度來進行排序?#

    /**
     * 按照地點進行分組
     * @param context
     * @param list
     * @return
     */
    public static List<GroupEntity> setAddressOrder(Context context, List<ParentEntity> list) {
        if (list == null || list.isEmpty()) {
            return null;
        }

        //排序前
        for (int i = 0; i < list.size(); i++) {
            String address = LocationUtil.queryLatLongItudeLocation(context,
                    list.get(i).getLatitude(), list.get(i).getLongitude());
            if(address != null){
                Log.e("===>>>", address);
            }
        }

        Collections.sort(list, new Comparator<ParentEntity>() {
            @Override
            public int compare(ParentEntity lhs, ParentEntity rhs) {
                if(1 < Math.abs(lhs.getLatitude() - rhs.getLatitude()) 
                        && 1 < Math.abs(lhs.getLongitude() - rhs.getLongitude())){
                    return 2;
                }else{
                    return 0;
                }
            }
        });

        //排序後
        for (int i = 0; i < list.size(); i++) {
            String address = LocationUtil.queryLatLongItudeLocation(context,
                    list.get(i).getLatitude(), list.get(i).getLongitude());
            if(address != null){
                Log.e("===>>>", address);
            }
        }

        List<GroupEntity> entlist = new ArrayList<GroupEntity>();
//      GroupEntity group = null;//用來存儲數據
//      for (int i = 0; i < list.size(); i++) {
//          ParentEntity entity = list.get(i);
//          
//          if (group == null 
//                  || 1 < Math.abs(group.latitude - entity.getLatitude()) 
//                  && 1 < Math.abs(group.longitude - entity.getLongitude())) {
//              group = new GroupEntity();//不相同新建放入
//              group.latitude = entity.getLatitude();
//              group.longitude = entity.getLongitude();
//              entlist.add(group);
//          }
//          group.list.add(entity);
//      }
        return entlist;
    }

最佳回答:


自己解決!!!

    /**
     * 按照地點進行分組
     * 
     * @param context
     * @param list
     * @return
     */
    public static List<GroupEntity> setAddressOrder(Context context,
            List<ParentEntity> list) {
        if (list == null || list.isEmpty()) {
            return null;
        }
        List<ParentEntity> temp = new ArrayList<ParentEntity>(list);
        List<GroupEntity> result = new ArrayList<GroupEntity>();
        while (!temp.isEmpty()) {
            GroupEntity ge = new GroupEntity(temp.remove(0));
            for (ParentEntity e : temp) {
                if (0.5 > Math.abs(ge.latitude - e.getLatitude())
                        && 0.5 > Math.abs(ge.longitude - e.getLongitude())) {
                    ge.list.add(e);
                }
            }
            temp.removeAll(ge.list);
            result.add(ge);
        }
        return result;
    }
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved