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中自定义JavaBean返回的json对象属性名称大写变小写问题
开发过程中发现查询返回的数据出现自定义的JavaBean的属性值大小写格式出现问题,导致前端无法接受到数据,目前有四种解决方法,根据大佬的经验之谈,前两种是最简单便捷的,后两种是比较通用的方法,需要的朋友可以参考下2023-10-10JAVA CountDownLatch与thread-join()的区别解析
这篇文章主要介绍了JAVA CountDownLatch与thread-join()的区别解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下2019-08-08Java操作MongoDB插入数据进行模糊查询与in查询功能
今天小编就为大家分享一篇关于Java操作MongoDB插入数据进行模糊查询与in查询功能,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧2018-12-12springboot redis使用lettuce配置多数据源的实现
这篇文章主要介绍了springboot redis使用lettuce配置多数据源的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2021-04-04
最新评论