我有一个问题,如何继续,任何人的帮助可以编码?
让我知道的基本概念太...
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);
}
}
谢谢!!
Java的TreeMap
有一个构造函数new TreeMap(Comparator<? super K>)
。所以,你可以只实例化一个TreeMap
与Comparator
排序像你想,然后直接就把这个TreeMap
。当你迭代的这个映射的entrySet的元素会在你需要的顺序。
您在Java中-8功能的风格比较可以写成
Comparator.comparing(String::length).thenComparing(String::compareTo);
创建快捷键的列表(或使用地图的的keySet),然后写你自己的比较排序该列表,然后遍历排序列表创建输出文件。
比较器可能是这样的:
public class Cmp1 implements Comparator<String> {
@Override
public int compare(String o1, String o2) {
if(o1.length() == o2.length()) {
//String's own comparator, which is alphabetical
return o1.compareTo(o2);
}
//otherwise compare the length
return o2.length() - o1.length();
}
}
编辑:或者,正如其他的答案指出,传递比较器树状图的构造。
你必须提供自己的比较的TreeMap
:
Map<String, String> treemap = new TreeMap<>(myComparator);
然后添加到新TreeMap
的所有元素:
treemap.addAll(map);
甚至更好,在可变qazxsw POI首先使用一个TreeMap。所以它不会是必要qazxsw POI的内容复制到一个新的map
。
一个简单的方法,使比较器在课堂上使用map
功能:
TreeMap