Коллекция букв в слове

Используя класс AbstractCollection реализовать собственный класс – «коллекция букв в слове» (Letters). 

Слово хранить в скрытом поле типа String. Считать, что порядок букв в коллекции совпадает с порядком их расположения в слове.

1). Реализовать конструктор без параметров и конструктор, принимающий аргумент типа String

2).Обеспечить работоспособность всех методов, наследуемых от AbstractCollection, в том числе и методов доступа к коллекции через итератор. Для этого создать собственную реализацию класса-итератора, реализующего интерфейс Iterator.

3).Метод  toString должен выдавать коллекцию букв слове следующим образом:

для слова "Hello123" [H,e,l,l,o,1,2,3]

4). Разработать набор Unit-тестов для проверки работоспособности  класса Letters.