• 技术文章 >Java >java教程

    java中Set与Map排序输出到Writer的示例代码分享

    黄舟黄舟2017-03-24 10:40:53原创591
    这篇文章主要介绍了 java中 SetMap排序输出到Writer详解及实例的相关资料,需要的朋友可以参考下

    java中 Set与Map排序输出到Writer详解及实例

    一般来说java.util.Set,java.util.Map输出的内容的顺序并不是按key的顺序排列的,但是java.util.TreeMap,java.util.TreeSet的实现却可以让Map/Set中元素内容以key的顺序排序,所以利用这个特性,可以将Map/Set转为TreeMap,TreeSet然后实现排序输出。
    以下是实现的代码片段:

     /**
       * 对{@link Map}中元素以key排序后,每行以{key}={value}形式输出到{@link Writer}<br>
       * map为空或null时则不向writer写入任何内容
       * @param map
       * @param writer 为null抛出{@link IllegalArgumentException}
       * @throws IOException
       */
      public static void storeSortedMap(Map<String,String> map,Writer writer) throws IOException {
        if(null==writer)
          throw new IllegalArgumentException("the arugment 'writer' must not be null ");
        TreeMap<String, String> sortedMap = new TreeMap<String,String>();
        if(null!=map)
          sortedMap.putAll(map);
        BufferedWriter bw=(writer instanceof BufferedWriter)?(BufferedWriter)writer
            : new BufferedWriter(writer);
        for (Entry<String,String> e:sortedMap.entrySet()) {
          bw.write(e.getKey() + "=" + e.getValue());
          bw.newLine();
        }
        bw.flush();
      }
      /**
       * 对 {@link Collection}中元素排序后(去除重复),元素分行输出到{@link Writer}<br>
       * collection为空或null时则不向writer写入任何内容
       * @param collection
       * @param writer 为null抛出{@link IllegalArgumentException}
       * @throws IOException
       */
      public static void storeSortedSet(Collection<String> collection,Writer writer) throws IOException {
        if(null==writer)
          throw new IllegalArgumentException("the arugment 'writer' must not be null ");
        TreeSet<String> sortedSet = new TreeSet<String>();
        if(null!=collection)
          sortedSet.addAll(collection);
        BufferedWriter bw=(writer instanceof BufferedWriter)?(BufferedWriter)writer
            : new BufferedWriter(writer);
        for (String e:sortedSet) {     
          bw.write(e);
          bw.newLine();
        }
        bw.flush();
      }

    调用示例如下:

    Map<String,String> map;
    //....
    storeSortedMap(map,new FileWriter(new File("c:\\id.txt")));
    Set<String,String> set;
    //....
    storeSortedSet(set,new FileWriter(new File("c:\\trainval.txt")));

    生成结果已经是排序的了

    以上就是java中Set与Map排序输出到Writer的示例代码分享的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    上一篇:详解spring boot配置单点登录的案例分享 下一篇:详解java中如何使用BufferedImage判断图像通道顺序并转RGB/BGR的代码案例
    大前端线上培训班

    相关文章推荐

    • 理解java8中java.util.function.*pojo反射新方法(附代码)• 浅析安卓app和微信授权登录及分享完整对接(代码分享)• 一招教你使用java快速创建Map(代码分享)• 教你一招搞定时序数据库在Spring Boot中的使用• 一文讲解Java中初始化List集合的8种方式(附代码)

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网