Easy Java Solution
\nclass CombinationIterator {\n\n    PriorityQueue<String> pq = new PriorityQueue<>();\n    public CombinationIterator(String characters, int combinationLength)
```\nclass CombinationIterator {\n\n    PriorityQueue<String> pq = new PriorityQueue<>();\n    public CombinationIterator(String characters, int combinationLength) {\n        generateComb(characters, combinationLength, 0, new StringBuilder());\n    }\n    public String next() {\n        return pq.poll();\n    }\n    public boolean hasNext() {\n        return !pq.isEmpty();\n    }\n    private void generateComb(String ch, int len, int st, StringBuilder sb){\n        if(len == 0){\n            pq.add(sb.toString());\n            return;\n        }\n        for(int i=st; i<=ch.length()-len; i++){\n            sb.append(ch.charAt(i));\n            generateComb(ch, len-1, i+1, sb);\n            sb.deleteCharAt(sb.length()-1);\n        }\n    }\n}\n```
['Java']