解决方案 »

  1.   

    String[] add = { "北京", "上海", "四川", "四川", "北京", "四川" };
    Arrays.sort(add);
    Map<String, String> m = new TreeMap<String, String>();
    for (String d : add) {
    m.put(d, d);
    }
    for (String key : m.keySet()) {
    System.out.println(key);
    }
      

  2.   

    你这个并不是按单词个数排序。而是按照String排序。我把String[] add = { "北京", "上海", "四川", "四川", "北京", "四川" };变成String[] add = { "北京", "上海", "四川", "四川", "北京", "四川", "上海", "上海" , "上海", "上海" , "上海", "上海" };排序结果一样。试试。
      

  3.   

    不管哪种方法都需要两个条件, 当多个地址出现次数相同时,还是要有个权重来经行二次筛选。权重的设计不应该是一个城市一个权重, 不然100个地址100个权重么?  建议你一个权重可以包含多个地址:
    比如1级对应北、上、广、深, 2级对应四川、浙江、江苏等。如果先按出现次数,就用Map统计下add[] 里面每个地址出现的次数,最大的为结果,如果有相同的再取权重,如果权重也相同那你就随意吧,从中选一个。如果按权重,那你从高到低依次查询, 同一权重出现多个再按出现次数。 实现的话可能稍微有点绕。 可以使用Map<Integer, List<String>> weight; 类似这样来保存地址的权重信息。
      

  4.   

    String[] add = { "北京", "上海", "四川", "四川", "北京", "四川", "上海", "上海", "上海",
    "上海", "上海", "上海" };
    Arrays.sort(add); Map<String, Integer> m = new TreeMap<String, Integer>();
    for (String d : add) {
    if (m.get(d) != null) {
    m.put(d, m.get(d) + 1);
    } else {
    m.put(d, 1);
    }
    } List<Map.Entry<String, Integer>> list = new ArrayList<Map.Entry<String, Integer>>(m.entrySet());
    Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {
    public int compare(Map.Entry<String, Integer> o1,
    Map.Entry<String, Integer> o2) {
    return (o1.getValue() - o2.getValue());
    }
    }); for (Map.Entry<String, Integer> o : list) {
    System.out.println(o);
    }
      

  5.   

    还有一个方法是按权重进行显示
    String[] add = {"北京",“上海”,"四川",“四川”,"北京","四川","重庆"};
    优先级  重庆 > 上海 > 北京  > 四川
    "地址":"重庆"(如果String数组没有重庆就显示上海,依此类推)。
      

  6.   

    没明白啊。 这个        优先级  重庆 > 上海 > 北京  > 四川   哪里来的
    是不是有这个直接去string数组里面找?
      

  7.   

    是从string数组里面找。就是说数组中不管数组中有什么值。只要有重庆就显示重庆,如果没有重庆就打有没有上海。有上海就显示上海。依次类推。
      

  8.   

    String[] add = {"北京",“上海”,"四川",“四川”,"北京","四川"};然后直接索引?[code=java]String[] add = { "北京", "上海", "四川", "四川", "北京", "四川", "上海", "上海", "上海",
    "上海", "上海", "上海" };

     List<String> list = Arrays.asList(add);
     
      

  9.   

    然后直接索引?[code=java]String[] add = { "北京", "上海", "四川", "四川", "北京", "四川", "上海", "上海", "上海",
    "上海", "上海", "上海" };

     List<String> list = Arrays.asList(add);
     
    优先级肯定是先知道的。传进来的String数组是不定的。这个逻辑怎么弄呢?
      

  10.   

    你String  放到map 里面  根据优先级作为key 取数据。
    String[] add = { "北京", "上海", "四川", "四川", "北京", "四川", "上海", "上海", "上海","上海", "上海", "上海" };
    Map<String,String> m = new  HashMap<String,String>();
    for (String o : add) {
    m.put(o, o);
    }
    //根据优先级 
    m.get(key);