我有一个问题如何继续,任何人可以帮助代码?
让我也知道基本概念。。。
readfile data => IBARAKI MitoCity
TOCHIGI UtunomiyaCity
GUNMA MaehashiCity
SAITAMA SaitamaCity
CHIBA ChibaCity
TOKYO Sinjyuku
KANAGAWA YokohamaCity
write text file output => CHIBA : ChibaCity
GUNMA : MaehashiCity
TOKYO : Sinjyuku
IBARAKI : MitoCity
SAITAMA : SaitamaCity
TOCHIGI : UtunomiyaCity
KANAGAWA : YokohamaCity
代码
import java.util.*;
import java.io.*;
public class ReadFileDemo{
public static void main(String[] args) throws IOException {
Reader reader = new InputStreamReader(new
FileInputStream(args[0]),"UTF-8");
BufferedReader br = new BufferedReader(reader);
Writer writer = new OutputStreamWriter(new
FileOutputStream("textB.txt"),"UTF-8");
BufferedWriter bw = new BufferedWriter(writer);
Map<String,String> map = new HashMap<String,String>();
String line=null;
while((line=br.readLine())!=null) {
String[] parts = line.split(" ");
String key=parts[0];
String value=parts[1];
map.put(key,value);
}
Map<String, String> treemap = new TreeMap<String, String>(map);
}
}
谢谢!!
3条答案
按热度按时间klr1opcd1#
创建一个键列表(或使用Map的键集),然后编写自己的比较器对该列表进行排序,然后遍历排序后的列表以创建输出文件。
比较器可能如下所示:
编辑:或者,正如其他答案所指出的,将这个比较器传递给树Map的构造函数。
oo7oh9g92#
java
TreeMap
有一个构造函数new TreeMap(Comparator<? super K>)
. 所以你可以示例化一个TreeMap
用一个Comparator
像你想的那样分类然后直接放在这里TreeMap
. 当您迭代这个Map的入口集时,元素将按您需要的顺序排列。java-8-functional风格的比较器可以写成
qlzsbp2j3#
你必须提供你自己的比较仪给
TreeMap
:然后将所有元素添加到新的
TreeMap
:或者更好的方法是,首先使用树状图来创建变量
map
. 所以不需要复制map
到一个新的TreeMap
.制作比较器的一个简单方法是使用类中的函数
java.util.Comparator
: