欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

面试题-给定一段文本,找到包含字段串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

输出结果:

面试题-给定一段文本,找到包含字段串a,同时剔除包含字符串b的行,然后使用“:”分割取所有列,最后对结果排序,统计每个值出现的次数

 

相关标签: 算法 面试