java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 程序设计语言和 Java 平台(即 JavaEE(j2ee), JavaME(j2me), JavaSE(j2se))的总称。
这篇文章主要介绍了 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")));
生成结果已经是排序的了
来源: http://www.phperz.com/article/17/1219/357872.html