java中 Set與Map排序輸出到Writer詳解及實例
創(chuàng)新互聯(lián)是一家專業(yè)提供葉縣企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計、H5高端網(wǎng)站建設(shè)、小程序制作等業(yè)務(wù)。10年已為葉縣眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進(jìn)行中。
一般來說java.util.Set,java.util.Map輸出的內(nèi)容的順序并不是按key的順序排列的,但是java.util.TreeMap,java.util.TreeSet的實現(xiàn)卻可以讓Map/Set中元素內(nèi)容以key的順序排序,所以利用這個特性,可以將Map/Set轉(zhuǎn)為TreeMap,TreeSet然后實現(xiàn)排序輸出。
以下是實現(xiàn)的代碼片段:
/** * 對{@link Map}中元素以key排序后,每行以{key}={value}形式輸出到{@link Writer}
* map為空或null時則不向writer寫入任何內(nèi)容 * @param map * @param writer 為null拋出{@link IllegalArgumentException} * @throws IOException */ public static void storeSortedMap(Mapmap,Writer writer) throws IOException { if(null==writer) throw new IllegalArgumentException("the arugment 'writer' must not be null "); TreeMap sortedMap = new TreeMap (); if(null!=map) sortedMap.putAll(map); BufferedWriter bw=(writer instanceof BufferedWriter)?(BufferedWriter)writer : new BufferedWriter(writer); for (Entry e:sortedMap.entrySet()) { bw.write(e.getKey() + "=" + e.getValue()); bw.newLine(); } bw.flush(); } /** * 對 {@link Collection}中元素排序后(去除重復(fù)),元素分行輸出到{@link Writer}
* collection為空或null時則不向writer寫入任何內(nèi)容 * @param collection * @param writer 為null拋出{@link IllegalArgumentException} * @throws IOException */ public static void storeSortedSet(Collectioncollection,Writer writer) throws IOException { if(null==writer) throw new IllegalArgumentException("the arugment 'writer' must not be null "); TreeSet sortedSet = new TreeSet (); 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(); }
調(diào)用示例如下:
Mapmap; //.... storeSortedMap(map,new FileWriter(new File("c:\\id.txt"))); Set set; //.... storeSortedSet(set,new FileWriter(new File("c:\\trainval.txt")));
生成結(jié)果已經(jīng)是排序的了
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!