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

 更新时间:2017年03月24日 10:32:24   作者:10km  
这篇文章主要介绍了 java中 Set与Map排序输出到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")));

生成结果已经是排序的了
这里写图片描述

这里写图片描述

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

相关文章

  • 详解SpringBoot定时任务功能

    详解SpringBoot定时任务功能

    这篇文章主要介绍了SpringBoot定时任务功能详细解析,这次的功能开发过程中也算是对其内涵的进一步了解,以后遇到定时任务的处理也更清晰,更有效率了,对SpringBoot定时任务相关知识感兴趣的朋友一起看看吧
    2022-05-05
  • 解决springboot中自定义JavaBean返回的json对象属性名称大写变小写问题

    解决springboot中自定义JavaBean返回的json对象属性名称大写变小写问题

    开发过程中发现查询返回的数据出现自定义的JavaBean的属性值大小写格式出现问题,导致前端无法接受到数据,目前有四种解决方法,根据大佬的经验之谈,前两种是最简单便捷的,后两种是比较通用的方法,需要的朋友可以参考下
    2023-10-10
  • IDEA2023隐藏.idea和.iml文件的实现步骤

    IDEA2023隐藏.idea和.iml文件的实现步骤

    IDEA新建项目会自动生成一个.idea文件夹和.iml文件,本文主要介绍了IDEA2023隐藏.idea和.iml文件的实现步骤,具有一定的参考价值,感兴趣的可以了解一下
    2023-09-09
  • java volatile关键字作用及使用场景详解

    java volatile关键字作用及使用场景详解

    在本文里我们给大家分享的是关于java volatile关键字作用及使用场景的相关知识点内容,需要的朋友们学习下。
    2019-08-08
  • JAVA CountDownLatch与thread-join()的区别解析

    JAVA CountDownLatch与thread-join()的区别解析

    这篇文章主要介绍了JAVA CountDownLatch与thread-join()的区别解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • Java操作MongoDB插入数据进行模糊查询与in查询功能

    Java操作MongoDB插入数据进行模糊查询与in查询功能

    今天小编就为大家分享一篇关于Java操作MongoDB插入数据进行模糊查询与in查询功能,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • Java中抽象类与方法的重写方式

    Java中抽象类与方法的重写方式

    这篇文章主要介绍了Java中抽象类与方法的重写方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • Spring Boot 快速集成 Redis的方法

    Spring Boot 快速集成 Redis的方法

    这篇文章主要介绍了Spring Boot 如何快速集成 Redis,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • Java利用策略模式优化过多if else代码

    Java利用策略模式优化过多if else代码

    这篇文章主要介绍了Java利用策略模式优化过多if else代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • springboot redis使用lettuce配置多数据源的实现

    springboot redis使用lettuce配置多数据源的实现

    这篇文章主要介绍了springboot redis使用lettuce配置多数据源的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04

最新评论