当前位置: 代码迷 >> Java Web开发 >> 一个算法优化有关问题,下午2点结贴,拜托大家了
  详细解决方案

一个算法优化有关问题,下午2点结贴,拜托大家了

热度:10163   发布时间:2013-02-25 21:19:42.0
一个算法优化问题,在线等,下午2点结贴,拜托大家了
我有这么个需求:
从数据库里面查询出来一个List<Map>,如果正常的话里面应该有9个元素,但是有可能会缺少其中的某几个元素,
这时候我就想把它对应的属性给一个默认值,以确保list里面正好9个元素。
里面存的数据格式是这样的1A,2B,3C,4D,5E,6F,7G,8H,9I(no,word)
以下是我想的办法,但我感觉效率有些低,不知道其他兄弟们有没有什么好办法!
Java code
public static final String[] NO_ARRAY = {"1", "2", "3", "4", "5", "6", "7", "8", "9"};// 循环放到list1_9里面if(list.size() < 9) {  for (Map map : list) {  String no = map .get("no").toString();  for (int i = 0; i < list1_9.size(); i++) {    if (StringUtils.equals(no, list1_9.get(i)))) {     list1_9.remove(i);        break;    }  } }}for (int i = 0; i < list1_9.size(); i++) {Map map = new HashMap();map.put(list1_9.get(i).toString(),"default");list.add(map);}

有点像伪代码,但是大致是这个意思。

------解决方案--------------------------------------------------------
Java code
if(list.size()!=9){ for (int i = 0; i < list1_9.size(); i++) {   for(循环查询得到的list){    if(!得到的map看是否contain list1_9.get(i)的值){       没有直接加进来    }  } }}
------解决方案--------------------------------------------------------
没看明白,像你这样的还需要List<Map>么,List<String>不就完了。
你的1A,2B,3C,4D,5E,6F,7G,8H,9I是map里的数据,还是List里的数据。
看的头晕。。。
------解决方案--------------------------------------------------------
Java code
   public List<Map<String, String>> getList(List<Map<String, String>> list){      final String[] NO_ARRAY = {"1", "2", "3", "4", "5", "6", "7", "8", "9"};      if(list!=null && list.size()>0){       for (int i = 0; i < NO_ARRAY.length; i++) {           boolean b = true ;        for (Map<String, String> map : list) {            for (String key : map.keySet()) {                if(map.get(key).equals(NO_ARRAY[i])){                    b = false ;                }            }        }        if(b){            Map<String, String> map = new HashMap<String, String>() ;            map.put(NO_ARRAY[i], NO_ARRAY[i]) ;            list.add(map) ;        }    }      }else{          for (int i = 0; i < NO_ARRAY.length; i++) {              if(list==null)                  list = new ArrayList<Map<String,String>>() ;              Map<String, String> map = new HashMap<String, String>() ;                map.put(NO_ARRAY[i], NO_ARRAY[i]) ;                list.add(map) ;          }      }    return list;          }
  相关解决方案