从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和重复的次数
2016-06-12 12:48
162 查看
一些经验总结:
1.对于读取文件,大家要熟记BufferedReader类,他可以一次读取一行,在很多的笔试题会遇到这样的例子,但是判断读取结束的标志并不是我们平时所见的-1,而是null。
2.可以利用集合进行简化代码,比如list元素可以重复,但是set的元素不可以重复等
package com.hbut.test;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class ReadName {
/**
* 1、从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和重复的次数,并按重复次数排序
* name.txt文件内容如下
* 1,张三,28
2,李四,35
3,张三,28
4,王五,35
5,张三,28
6,李四,35
7,赵六,28
8,田七,35
*/
public static void main(String[] args) throws IOException {
//使用BufferedReader一次可以读取一行,判断是否为结尾用null判断
BufferedReader bf = new BufferedReader(new FileReader("names.txt"));
String str= bf.readLine();
List<String> names = new ArrayList<String>();
while(str!=null){ //1,张三,28
String []st=str.split(",");
names.add(st[1]);
//只把姓名添加进去就可以了
str= bf.readLine();
}
Set<String> name =
new HashSet<String>(names); //[赵六, 张三, 田七, 李四, 王五]
//由于set集合是不允许有重复的元素的,所以可以用set集合去重
for(String set :name){
String temp=set;
int num=0;
for(String s : names) //list集合里有很多重复的。对每次迭代的元素,要是次数大于2就表示重复
{
if(temp.equals(s)){
num++;
}
}
if(num>=2){
System.out.println(temp+"重复次数:"+num);
}
}
}
}
输出结果:
张三重复次数:3
李四重复次数:2
1.对于读取文件,大家要熟记BufferedReader类,他可以一次读取一行,在很多的笔试题会遇到这样的例子,但是判断读取结束的标志并不是我们平时所见的-1,而是null。
2.可以利用集合进行简化代码,比如list元素可以重复,但是set的元素不可以重复等
package com.hbut.test;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class ReadName {
/**
* 1、从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和重复的次数,并按重复次数排序
* name.txt文件内容如下
* 1,张三,28
2,李四,35
3,张三,28
4,王五,35
5,张三,28
6,李四,35
7,赵六,28
8,田七,35
*/
public static void main(String[] args) throws IOException {
//使用BufferedReader一次可以读取一行,判断是否为结尾用null判断
BufferedReader bf = new BufferedReader(new FileReader("names.txt"));
String str= bf.readLine();
List<String> names = new ArrayList<String>();
while(str!=null){ //1,张三,28
String []st=str.split(",");
names.add(st[1]);
//只把姓名添加进去就可以了
str= bf.readLine();
}
Set<String> name =
new HashSet<String>(names); //[赵六, 张三, 田七, 李四, 王五]
//由于set集合是不允许有重复的元素的,所以可以用set集合去重
for(String set :name){
String temp=set;
int num=0;
for(String s : names) //list集合里有很多重复的。对每次迭代的元素,要是次数大于2就表示重复
{
if(temp.equals(s)){
num++;
}
}
if(num>=2){
System.out.println(temp+"重复次数:"+num);
}
}
}
}
输出结果:
张三重复次数:3
李四重复次数:2
相关文章推荐
- Android Native 绘图方法
- maven使用经验集
- 样式表CSS布局经验
- 路由器之基本维护经验
- C#中struct和class的区别详解
- VBS ArrayList Class vbs中的数组类
- 大家看了就明白了css样式中类class与标识id选择符的区别小结
- 学习C和C++的9点经验总结
- 非常不错的MySQL优化的8条经验
- 深入了解PHP类Class的概念
- jquery 表单验证之通过 class验证表单不为空
- setAttribute 与 class冲突解决
- JavaScript通过HTML的class来获取HTML元素的方法总结
- JavaScript中的类(Class)详细介绍
- javascript面向对象包装类Class封装类库剖析
- jQuery针对input的class属性写了多个值情况下的选择方法
- 详解js中class的多种函数封装方法
- jQuery使用hide方法隐藏指定元素class样式用法实例
- jQuery给多个不同元素添加class样式的方法
- jQuery点击改变class并toggle及toggleClass()方法定义用法