计算arraylist中的重复项

时间:2014-03-06 00:34:32

标签: java file text arraylist

我有一个包含以下内容的文本文件:

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))) {
                }
            }

        }
    }
}

请帮我弄清楚这个问题,我不是要复制,这不是我的作业或任何作业。如果我正朝着正确的方向前进,请告诉我。谢谢

3 个答案:

答案 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));
}

这将为您提供所有文件扩展名的计数。