'How do you convert an arrayStack of Object into HashSet?

        public Set<Cell> solve(Maze maze) {

          ArrayStack<Cell> path = new ArrayStack<Cell>()

          return (Set<Cell>) path;

I'll keep it short, but I have made my maze solver and it works and it's stored in ArrayStack 'path' and I'm trying to convert it to a Set so I can return it but it isn't working and it's saying 'Unchecked cast'. Any suggestion on how I could fix this?

I tried iterating,

 HashSet<Cell> test = new HashSet<>();
    while(!path.isEmpty()) {
        marker.add(path.pop());
    }

    Iterator<Cell> itr = test.iterator();
    while(itr.hasNext()) {
        System.out.println(itr.next());
    }

It's not really showing how I wanted it to be even if it's reversed.



Solution 1:[1]

Assuming you are using the Apache ArrayStack class...

ArrayStack does not implement the Set interface so you cannot cast it to that type.

You need to create an instance of a Set implementation and populate it with the elements from the ArrayStack. Note that the Set interface is specifically un-ordered. If you want Set semantics but in a reliable order then consider using a TreeSet rather than a HashSet. TreeSet implements SortedSet and will produce its elements in their natural ordering when iterated. Since ArrayStack implements Collection, you should be able to do the following:

return new TreeSet<Cell>(path);

This assumes that Cell has a natural ordering that matches the position within the path.

Solution 2:[2]

If it is org.apache.commons.collections.ArrayStack, you can create the set with

return new HashSet<>(path);

Please note that a set can contain each object only once and the order of objects is not guaranteed. The "contain only once" is checked with .equals() (and .hashcode()) of the contained objects (so you might want to override those methods with a proper implementation for Cell).

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 vsfDawg
Solution 2 cyberbrain