Ah okay Louis, if that's the case then that certainly makes sense, and I'd
agree that there's no good way of doing so, as one would need to copy the
set into a list.

Dave, did Louis hit the mark? If not, would you kindly go into further
detail as to exactly what it is you're trying to do?

Best,
Jonathan

On 10 September 2016 at 23:36, Jonathan Bluett-Duncan <
jbluettdun...@gmail.com> wrote:

> Hi Dave,
>
> Rather than using Iterator.clone(), how about you just call
> collection.iterator() 2 times to return 2 unique, non-same iterators;
> something like the following:
>
> import java.util.Collections;
> import java.util.Iterator;
> import java.util.Set;
> import java.util.concurrent.ConcurrentHashMap;
>
> public class Example {
>   public static void main(String[] args) {
>     Set<String> s = Collections.newSetFromMap(new ConcurrentHashMap<String, 
> Boolean>());
>
>     s.add("Fee");
>     s.add("Fi");
>     s.add("Fo");
>     s.add("Fum");
>
>     Iterator<String> it1 = s.iterator();
>     for (String v1 = null; it1.hasNext(); v1 =it1.next()) {
>       Iterator<String> it2 = s.iterator(); // a completely separate iterator 
> to it1
>       for (String v2 = null; it2.hasNext(); v2 = it2.next()) {
>         System.out.println(v1 + " <-->" + v2);
>       }
>     }
>   }
> }
>
>
> Or, even better, if you're using Java 5+, you can skip using Iterators
> altogether and use for-loops directly:
>
> import java.util.Collections;
> import java.util.Set;
> import java.util.concurrent.ConcurrentHashMap;
>
> public class Example {
>   public static void main(String[] args) {
>     Set<String> s = Collections.newSetFromMap(new ConcurrentHashMap<String, 
> Boolean>());
>
>     s.add("Fee");
>     s.add("Fi");
>     s.add("Fo");
>     s.add("Fum");
>
>     for (String v1 : s) {
>       for (String v2 : s) {
>         System.out.println(v1 + "<-->" + v2);
>       }
>     }
>   }
> }
>
>
> Kind regards,
> Jonathan
>
> On 10 September 2016 at 23:13, Dave Brosius <dbros...@mebigfatguy.com>
> wrote:
>
>> It would be nice to be able to associate each element in a collection
>> with another element in the collection, which is something very easily done
>> with index based collections, but with sets, etc this isn't so easy...
>> unless i'm having a brainfart.
>>
>> So i'd like to do this, but Iterator doesn't implement Cloneable... Any
>> reason not to? or is there another way that's missing me?
>>
>> public class ItClone {
>>
>>     public static void main(String[] args) {
>>         Set<String> s = Collections.newSetFromMap(new
>> ConcurrentHashMap<String, Boolean>());
>>
>>         s.add("Fee");
>>         s.add("Fi");
>>         s.add("Fo");
>>         s.add("Fum");
>>
>>         Iterator<String> it1 = s.iterator();
>>         while (it1.hasNext()) {
>>             String v1 = it1.next();
>>
>>             Iterator<String> it2 = (Iterator<String>) it1.*clone*();
>>             while (it2.hasNext()) {
>>                 String v2 = it2.next();
>>
>>                 System.out.println(v1 + " <-->" + v2);
>>             }
>>         }
>>     }
>> }
>>
>
>

Reply via email to