2017-04-22 54 views
1

晚上好,計數陣列內的課程

我想弄清楚它是否有可能在數組內計算某些課程。下面是我的例子。

實施例:

list.add(new Student(" Bourne", "70","\tCOP2250, ENC3250, COP3530")); 
list.add(new Student(" Gracia", "50","\tCOP2250, COP3250, COP4250")); 


Output: 

COP2250 - 2 
COP3530 - 1 
ENC3250 - 1 

輸出應該像上面。讓我知道是否可以這樣做,否則我需要單獨排列課程。

在此先感謝您的支持。

+0

這是非常可能的。有很多方法可以做到這一點...我不記得太多的Java,但在C++ TL:DR;你可以創建一個對的向量。每一對都是課程的字符串名稱和計數值。然後循環課程,循環遍歷向量以查看它的對是否存在,如果是這樣,則向計數添加1,如果不是創建一個對並向該向量push_back。在最後,你可以循環矢量,這將有一個計數爲每個獨特的課程。這很令人困惑,在Java中可能更簡單,就像@ user7790438所建議的那樣。 –

+0

你有所有可能的課程清單嗎? – Hannes

+0

試試這個int count = Collections.frequency(Arrays.asList(array),your_stufrn_with_your_course); –

回答

1

你可以使用這樣的事情:

Map<String, Integer> cources = new HashMap<>(); 
for (Student s : list) { 
    //I assumed that eg. "\tCOP2250, ENC3250, COP3530" is in a (public) variable Cources 
    //in your Student class. You can replace this by a getter or whatever you need. 
    for (String name : s.Courses.replace("\t", "").split(", ")) { 
     if (cources.containsKey(name)) 
      cources.replace(name, cources.get(name)+1); 
     else 
      cources.put(name, 1); 
    } 
} 
//some output for testing 
cources.forEach((a, b) -> System.out.println(a + " - " + b)); 
+0

就是這樣!老兄,你是一個拯救生命的人。我有一個關於使用HashMap的想法,但甚至不知道從哪裏開始。非常感謝你,祝你有個美好的夜晚! – Mario