从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和重复的次数
生活随笔
收集整理的這篇文章主要介紹了
从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和重复的次数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一些經驗總結:
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
總結
以上是生活随笔為你收集整理的从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和重复的次数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Hadoop之MapReduce程序应用
- 下一篇: 编写一个程序,将d:\java目录下的所