需求:对用户上传的文件去除空行,去重
方法一:根据HashMap键唯一实现
示例
/**
*拿到前端传来的MultipartFile流文件,去除空行和去重及去除邮箱格式不合法的地址,并将去重后的文件写入集合(使用FileUtils工具类可以将集合中的数据写入File)
* MultipartFile转file
*@param:MultipartFile流文件
*@return:total:去除空行后的总行数;map.size()去重后的总行数;lines:去重后的文件集合
*/
public static FileData filterRepeateLines(InputStream is) throws Exception {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(is));
Map<String, String> map = new HashMap<String, String>();
String readLine = null;
int total = 0;
List<String> lines = new ArrayList<String>();
while ((readLine = bufferedReader.readLine()) != null) {
total++;
//去除空行
if (readLine.equals("")) ;
//去除邮箱格式不正确的地址
else if (!EmailValidatorUtil.isValidFormat(readLine)) ;
else {
if (!map.containsKey(readLine)) {
map.put(readLine, "1");
}
}
}
for (String key : map.keySet()) {
lines.add(key);
}
FileData data = new FileData();
data.setAfterFilterNumber(map.size());
data.setTotalNumber(total);
data.setList(lines);
bufferedReader.close();
return data;
}
补充
File toFile;
//使用FileUtils类中的writeLines方法,将集合中的数据写入文件。执行后前端传来的MultipartFile文件转换成File
FileUtils.writeLines(toFile, fileData.getList());
方法二:根据HashSet实现
//关键代码
List beforeList = new ArrayList();
for (String email : split) {
beforeList.add(email);
}
Set middleHashSet = new HashSet<>(beforeList);
List afterHashSetList = new ArrayList(middleHashSet);
// System.out.println(“删除非法格式前的集合是:”+afterHashSetList);
Iterator iterator = afterHashSetList.iterator();
while(iterator.hasNext()){
String next = iterator.next();
if(!EmailValidatorUtil.isValidFormat(next)){
num=num+1;
iterator.remove();
}
}
// System.out.println(“删除非法格式后的集合是:”+afterHashSetList);