Java Hash Collection - PullRequest
       4

Java Hash Collection

0 голосов
/ 23 октября 2009

В Java есть класс HashSet

Например, я добавлю следующее значение типа int в HashSet,

[вход]

1,2,3,4,5,6,1,2,3,1, 

[хеш-структура]

1,1,1
2,2
3,3
4
5
6

Есть ли коллекция, которая станет такой структурой?

Ответы [ 2 ]

7 голосов
/ 23 октября 2009

Если я правильно понимаю ваш вопрос, вы ищете то, что называется «Мультисеть». В Java нет встроенных мультисетей, но вы можете создать то, что вы хотите, с помощью HashMap<Integer, HashSet<Integer>>. Для этого есть также ряд сторонних библиотек, таких как Библиотека коллекций Google .

6 голосов
/ 23 октября 2009

Нет, но достаточно просто обернуть HashMap.

public class Tally<T> {
  private final Map<T, Integer> count = new HashMap<T, Integer>();

  public void increment(T t) {
    Integer i = count.get(t);
    count.put(t, i == null ? 1 : i+1);
  }

  public void decrement(T t) {
    Integer i = count.get(t);
    if (i == null) {
      throw new IllegalArgumentException("not present");
    }
    if (i == 1) {
      count.remove(t);
    } else {
      count.put(t, i-1);
    }
  }

  public int get(T t) {
    Integer i = count.get(t);
    return i == null ? 0 : i;
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...