日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和重复的次数

發布時間:2024/1/23 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和重复的次数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一些經驗總結:

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

總結

以上是生活随笔為你收集整理的从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和重复的次数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。