我有一个包含以下内容的文本文件:
File1.txt
File2.doc
File3.out
File4.txt
File5.so
File6.dll
我正在尝试让输出只返回扩展名以及它在文本文件中出现的次数。
因此,对于此特定文件,输出应返回: txt 2 doc 1 出1 所以1 dll 1
输出需要在java输出中,而不是它自己的文件。
到目前为止,我有这个:
import java.util.*;
import java.io.*;
public class prob03 {
public static void main(String[] args) throws Exception {
Scanner input = new Scanner(new File("prob03.txt"));
ArrayList<String> extensionsArray = new ArrayList<String>();
while (input.hasNextLine()) {
String line = input.nextLine();
String[] parts = line.split("\\.");
String part1 = parts[0];
String extension = parts[1];
extensionsArray.add(extension);
}
for (int i = 0; i < extensionsArray.size(); i++) {
for (int j = 0; j < i; j++) {
if (extensionsArray.get(i).equals(extensionsArray.get(j))) {
}
}
}
}
}
请帮我弄清楚这个问题,我不是要复制,这不是我的作业或任何作业。如果我正朝着正确的方向前进,请告诉我。谢谢
答案 0 :(得分:0)
如果你真的想要变得懒惰,你可以这样做:
int dupeCount = extensionsArray.size() - new HashSet<String>(extensionsArray).size();
它基本上减去了元素总数乘以唯一元素的数量(Set
s不允许重复),这将为您提供重复元素的数量。
答案 1 :(得分:0)
您可以使用HashMap,其中键是文件扩展名,值是您找到它的次数。
HashMap<String, Integer> extensionsCount = new HashMap<>();
for (String extension: extensionsArray) {
Integer count = extensionsCount.get(extension);
if (count == null) {
count = 0;
}
count++;
extensionsCount.put(extension, count);
}
答案 2 :(得分:0)
使用HashMap
ArrayList<String> files // <-- your list of filenames
HashMap<String, Integer> extensions = new HashMap<String, Integer>();
for (String filename : files) {
String ext = filename.split(".")[1];
if (extensions.containsKey()) {
Integer count = extensions.get(ext);
count++;
extensions.put(ext, count);
}
else {
extensions.put(ext, new Integer(1))
}
}
for (String ext : extensions.ketSet()) {
System.out.println(ext + ", " + exttensions.get(ext));
}
这将为您提供所有文件扩展名的计数。