【问题标题】:counting the duplicates in the arraylist [duplicate]计算arraylist中的重复项[重复]
【发布时间】:2014-04-08 09:08:37
【问题描述】:

我有一个文本文件,其中包含:

File1.txt
File2.doc
File3.out
File4.txt
File5.so
File6.dll

我试图让输出仅返回扩展名以及它在文本文件中出现的次数。

所以对于这个特定的文件,输出应该返回: 文本 2 文件 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))) {
                }
            }

        }
    }
}

请帮我解决这个问题,我不是要抄袭,这不是我的家庭作业或任何类型的作业。请让我知道我是否朝着正确的方向前进。谢谢你

【问题讨论】:

  • “请帮我解决这个问题” 什么问题?你遇到过什么错误吗?

标签: java file text arraylist


【解决方案1】:

使用哈希映射

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

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

【讨论】:

    【解决方案2】:

    您可以使用 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);
    
    }
    

    【讨论】:

      【解决方案3】:

      如果你真的很懒惰,你可以这样做:

      int dupeCount = extensionsArray.size() - new HashSet<String>(extensionsArray).size();
      

      这基本上是用唯一元素的数量减去元素的总数(Sets 不允许重复),这将为您提供重复的元素数量。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-05-29
        • 1970-01-01
        • 1970-01-01
        • 2017-11-06
        • 1970-01-01
        • 1970-01-01
        • 2014-06-20
        • 2021-05-29
        相关资源
        最近更新 更多