2014-03-06 21 views
0

計數的重複我有一個包含一個文本文件: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))) { 
       } 
      } 

     } 
    } 
} 

請幫我找出這個問題,我不會試圖複製,這是不是我的功課或任何形式轉讓。請讓我知道我是否正朝着正確的方向前進。謝謝

+0

「請幫我弄清楚這個問題」_what_問題?你有沒有遇到任何錯誤? –

回答

0

如果你真的想成爲真懶,你可以這樣做:

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

這基本上通過減去獨特元素的元素數量的總數(Set■不要允許重複),它會給你一些重複的元素。

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

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

這會給你所有文件擴展名的計數。