求大神解析 重复的数据怎么显示不出

qq_39048560 2017-12-22 08:05:38





import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class FileParser {
private File file;
private BufferedReader reader;
private InputStream is;
private InputStreamReader isReader;
public FileParser() {}
public FileParser(String filePath) {
file = new File("C:/Users/11150/Desktop/蓝桥杯省赛试题/第八届蓝桥杯大赛个人赛省赛(软件类)真题/0-试题/Java语言C组/2/A.txt");
initReader();
}
/**
初始化文件输入流,为文件读取做准备
*/
private void initReader() {
if(file != null && file.isFile() && file.canRead()) {
//文件存在可读取并且是“文件”而不是目录
try {
is = new FileInputStream(file);//创建文件输入流
isReader = new InputStreamReader(is);//创建输出流的Reader
reader = new BufferedReader(isReader);//用于按行读取文件
} catch (Exception e) {
e.printStackTrace();
}
}
}
/**
转换文件内容,将文件中的数据转换成List<Integer>
*/
public List<Integer> parse() {
List<Integer> lstNumber = null;//最终结果保存在这里
String txtLine = null;//临时变量,保存按行读取到的字符串
String splitRegexp = "([0-9]+)\\s?";//匹配数字的正则表达式
Pattern pattern = Pattern.compile(splitRegexp);//编译正则
Matcher matcher = null;//正则的Matcher对象
//开始读取文件
if(reader != null) {
lstNumber = new ArrayList<Integer>();//初始化List
try {
while((txtLine = reader.readLine()) != null) {//按行读取文件
matcher = pattern.matcher(txtLine);//获取matcher实例,准备进行查找
while(matcher.find()) {//查找符合条件的匹配组,将结果放入List
lstNumber.add(Integer.valueOf(matcher.group(0)));
}
}
} catch (IOException e) {
e.printStackTrace();
} finally {
//关闭流
try {
reader.close();
isReader.close();
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return lstNumber;//返回结果
}
public static void main(String[] args) {
FileParser fileParser = new FileParser("D:\\test.txt");
System.out.println(fileParser.parse());
List<String> l =new ArrayList<String>();

HashMap<String, Integer> hs = new HashMap<String, Integer>();
for (String string : l) {
Integer count = 1;
if(hs.get(string) != null) {
count = hs.get(string) + 1;
}
hs.put(string, count);
}
System.out.println(hs);
System.out.print("重复的有:");
for (String key : hs.keySet()) {
if (hs.get(key)!=null&hs.get(key)>1) {
System.out.print(key+" ");
}
}
}
}
...全文
136 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复

51,412

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧