Вам необходимо разрешить дублирование, поэтому использование массива String в качестве структуры данных усложняет задачу. Лучше использовать карту, где ключ - это строка, а значение - целое число.
Неясно, каков предел комнаты, поэтому на данный момент вы можете определить частного члена с именем room, который будет int и всякий раз, когда вы намереваетесь добавить строку, проверяйте количество элементов в комнате. Если он меньше, то увеличивайте значение записи карты, если она существует. Если этого не произошло, просто создайте его со значением 1.
удалить следует проверить на наличие. Если у вашей Карты нет элемента, выведите исключение. В противном случае уменьшите значение элемента карты, если оно больше 1. Если оно равно 1, просто удалите его с карты.
Чтобы вычислить количество элементов, пройдите по карте и вычислите сумму значений.
содержит должно быть просто, вам просто нужно вызвать метод вашей карты. счет должен быть простым.
ничья это интересно. Сначала вычислите количество элементов, используйте его как недостижимую верхнюю границу вашей рандомизации, инициализируйте сумму и начните обход карты. На каждой итерации увеличивайте сумму (которая равна 0 до цикла) значением записи в карте. Если случайное число меньше суммы, то вызовите remove, передав ключ элемента, и выйдите из цикла.
РЕДАКТИРОВАТЬ
Если вам нужно сделать это с массивом элементов String, то вы можете сделать это, но вам также нужно будет хранить целое число для каждой строки, это будет другой массив, и самым простым представлением будет гарантировать, что каждый Элемент в массиве String будет связан со значением int в массиве int с тем же индексом. Не слишком элегантно, но можно использовать. Теперь, в этом случае вы не могли бы использовать методы Map, но вам нужно будет реализовать вещи самостоятельно.