具体实现如下:
public class Test02 {
public static void main(String[] args) {
LinkedList<Character> strings = new LinkedList<>();
TreeMap<Character, Long> characterIntegerTreeMap = new TreeMap<>();
try(BufferedReader bufferedReader = new BufferedReader(new FileReader("./resources/a.txt"));
final BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter("./resources/b.txt"))){
String m="";
while((m=bufferedReader.readLine())!=null){
for (int i = 0; i <m.length() ; i++) {
strings.add(m.charAt(i));
}
}
for(Character a:strings) {
long count = strings.stream().filter((c) -> {
if (c.equals(a)) {
return true;
} else {
return false;
}
}).count();
characterIntegerTreeMap.put(a,count);
}
bufferedWriter.write(characterIntegerTreeMap.toString());
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(characterIntegerTreeMap);
}
}
难点:1.因为是对文件的操作,所以需要用到IO流,IO是需要关闭的,所以放在try()的小括号里面。
2.LIst遍历的时候没有办法进行其他操作,只能用流来进行过滤。从头过滤到尾,在全部输入到MAP中,因为MAP也是不可重复的,所以完全不用担心。
3.write()里面没有办法一下子写入整个map,只能将map转为string