面试题-给定一段文本,找到包含字段串a,同时剔除包含字符串b的行,然后使用“:”分割取所有列,最后对结果排序,统计每个值出现的次数
程序员文章站
2022-07-14 14:37:52
...
import java.io.IOException;
import java.io.FileReader;
import java.io.BufferedReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.TreeMap;
public class Test3 {
public static void main(String [] args) throws IOException{
String fileName = ".//test.txt";
TreeMap<String,Integer> map = Solution(fileName, "abc", "beijing");
//输出结果
System.out.println("----------------排序后的结果为:-------------------");
for(Object s : map.keySet()){
System.out.println("key:"+(String)s+" value:"+map.get((String)s));
}
}
//找到包含有字符串a的行,同时剔除包含字符串b的行,对选出来的行按照":"分割,对结果排序,统计每个值出现的次数。
public static TreeMap<String,Integer> Solution(String fileName, String a, String b) throws IOException{
FileReader fileReader = new FileReader(fileName);
BufferedReader bufferedReader = new BufferedReader(fileReader);
//满足条件的行加入有序的arraylist
ArrayList<String> list = new ArrayList<String>();
String line;
while((line = bufferedReader.readLine()) != null){
//System.out.println(line);
//对符合条件的行进行分割
if(line.contains(a) && !line.contains(b)){
String [] str = line.split(":");
//将分割后的所有列加入list
for(int k = 0; k < str.length; k++){
list.add(str[k]);
}
}
}
System.out.println("----------------剔除不满足行分割后的结果为:-------------------");
for(int k = 0; k < list.size(); k++){
System.out.println(list.get(k));
}
bufferedReader.close();
fileReader.close();
//对字符串进行排序
Collections.sort(list);
//创建有序集合
TreeMap<String,Integer> map = new TreeMap<String,Integer>();
for(Object s : list){
if(map.containsKey(s)){
//统计字符串出现的次数
map.put((String)s, map.get((String)s)+1);
}else{
map.put((String)s,1);
}
}
return map;
}
}
测试文本:test.txt
abcdefg:family:45646:test
anhui:java:xian:abc
SHIT:nanshan:nanjing:acm:math:abc:anhui:java
789:TEL:address:science
beijing:abc:cccc
输出结果: