Java数据存入HashMap中键值不唯一是怎么回事??求大神指点
/**获取D:\\迅雷下载t目录下所有文件的后缀名,并统计后缀名对应的文件个数,将这些文件的后缀名和对应的文件个数进行拼接,并将拼接的结果写到data.txt中。data...
/*
*
获取D:\\迅雷下载t目录下所有文件的后缀名,并统计后缀名对应的文件个数,将这些文件的后缀名和对应的文件个数进行拼接,并将拼接的结果写到data.txt中。
data.txt中数据的格式如下:xls:2; doc:1; mp3:7; docx:1; txt:4;
*/
public class Test {
public static void main(String[] args) throws IOException {
File f= new File("D:\\迅雷下载");
showFil(f);
}
private static void showFil(File f) throws IOException {
HashMap<String,Integer> map= new HashMap<String ,Integer>();
//获取D:\\迅雷下载中所有文件名
File[] lis = f.listFiles();
for (File file : lis) {
if(file.isDirectory()){
showFil(file);
}
else{
String str = file.getName();
int lastIndexOf = str.lastIndexOf('.');
String newStr = str.substring(lastIndexOf+1);
Integer v = map.get(newStr);
//把获取的文件名存入Map集合中
if(v==null){
map.put(newStr, 1);
}
else{
v++;
map.put(newStr, v);
}
}
}
//遍历Map集合并把键值对存入StringBuffer中
StringBuffer sb= new StringBuffer();
Set<String> keySet = map.keySet();
for (String key : keySet) {
sb.append(key+":"+map.get(key)+";\t");
}
//写入文件中
String string = sb.toString();
System.out.print(string);
BufferedWriter bw = new BufferedWriter(new FileWriter("data.txt"));
bw.write(string);
bw.flush();
bw.close();
}
}
//输出结果:jpg:12; db:1; jpg:11; db:1; png:9; css:1; jpg:12; db:1; txt:1; rmvb:1; txt:2;
//D:\\迅雷下载是多层目录 展开
*
获取D:\\迅雷下载t目录下所有文件的后缀名,并统计后缀名对应的文件个数,将这些文件的后缀名和对应的文件个数进行拼接,并将拼接的结果写到data.txt中。
data.txt中数据的格式如下:xls:2; doc:1; mp3:7; docx:1; txt:4;
*/
public class Test {
public static void main(String[] args) throws IOException {
File f= new File("D:\\迅雷下载");
showFil(f);
}
private static void showFil(File f) throws IOException {
HashMap<String,Integer> map= new HashMap<String ,Integer>();
//获取D:\\迅雷下载中所有文件名
File[] lis = f.listFiles();
for (File file : lis) {
if(file.isDirectory()){
showFil(file);
}
else{
String str = file.getName();
int lastIndexOf = str.lastIndexOf('.');
String newStr = str.substring(lastIndexOf+1);
Integer v = map.get(newStr);
//把获取的文件名存入Map集合中
if(v==null){
map.put(newStr, 1);
}
else{
v++;
map.put(newStr, v);
}
}
}
//遍历Map集合并把键值对存入StringBuffer中
StringBuffer sb= new StringBuffer();
Set<String> keySet = map.keySet();
for (String key : keySet) {
sb.append(key+":"+map.get(key)+";\t");
}
//写入文件中
String string = sb.toString();
System.out.print(string);
BufferedWriter bw = new BufferedWriter(new FileWriter("data.txt"));
bw.write(string);
bw.flush();
bw.close();
}
}
//输出结果:jpg:12; db:1; jpg:11; db:1; png:9; css:1; jpg:12; db:1; txt:1; rmvb:1; txt:2;
//D:\\迅雷下载是多层目录 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询