Home guava example - Multiset
Post
Cancel

guava example - Multiset

view source

plain java로 단어수를 카운트 하는 방법

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
  @Test
  public void wordCountTest() throws Exception {
    // 단어수를 카운트 하는 방법
    List<String> words = new ArrayList<>();
    words.add("java");
    words.add("scala");
    words.add("python");
    words.add("java");
    words.add("java");
    words.add("java");

    Map<String, Integer> wordCountMap = new HashMap<>();
    for (String word : words) {
      Integer count = wordCountMap.get(word);
      if (count == null) {
        wordCountMap.put(word, 1);
      } else {
        wordCountMap.put(word, count + 1);
      }
    }

    System.out.println(wordCountMap); // {python=1, java=4, scala=1}
    assertEquals(4, wordCountMap.get("java").intValue());
  }

Multiset으로 단어수를 카운트 하는 방법

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
  @Test
  public void wordCountByMultiSetTest() throws Exception {
    // Multiset으로 단어수를 카운트 하는 방법
    List<String> words = new ArrayList<>();
    words.add("java");
    words.add("scala");
    words.add("python");
    words.add("java");
    words.add("java");
    words.add("java");

    Multiset<String> wordMultiSet = HashMultiset.create();

//    for (String word : words) {
//      wordMultiSet.add(word);
//    }

    // 하나씩 for문 돌면서 add 할 수도 있지만, 한번에 addAll하는 방법도 있다.
    wordMultiSet.addAll(words);
    System.out.println(wordMultiSet); // [python, java x 4, scala]
    assertEquals(4, wordMultiSet.count("java"));
  }

다양한 API 제공

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
  @Test
  public void queryTest() throws Exception {
    List<String> words = new ArrayList<>();
    words.add("java");
    words.add("scala");
    words.add("python");
    words.add("java");
    words.add("java");
    words.add("java");

    Multiset<String> wordMultiSet = HashMultiset.create();
    wordMultiSet.addAll(words);

    System.out.println(wordMultiSet); // [python, java x 4, scala]
    assertEquals(4, wordMultiSet.count("java"));

    // java의 카운트를 3감소
    wordMultiSet.remove("java", 3);
    assertEquals(1, wordMultiSet.count("java"));

    // java의 카운트를 30으로 강제 설정
    wordMultiSet.setCount("java", 30);
    assertEquals(30, wordMultiSet.count("java"));

    // 기존값이 99라면 20으로 변경한다.
    wordMultiSet.setCount("java", 99, 20);

    // 기존값인 30이 그대로 유지되어 있다.
    assertEquals(30, wordMultiSet.count("java"));
  }
This post is licensed under CC BY 4.0 by the author.