简体   繁体   中英

How can I make Iterator from List<HashSet<Integer>> collection?

I trying to make Iterator of List<HashSet<Integer>> list = new ArrayList<>() .

However, I keep falling.

This is What I tried Iterator Iterator<HashSet<Integer>> iterator = new list.iterator()

Please somebody help me :(

How can I create iterator of that collection?

It's part of the code

public class Test {
private static List<HashSet<Integer>> basketList = new ArrayList<>();
private static Map<Integer, Integer> map = new HashMap<>();

public static void settingBasket(String fname) throws FileNotFoundException {
    Scanner scan = new Scanner(new File(fname));
    int n = Integer.parseInt(scan.next());
    Iterator<HashSet<Integer>> iter = basketList.iterator(); // error
    for(int i=0; i<n; i++) {
        scan.next();
        int m = Integer.parseInt(scan.next());
        HashSet<Integer> elems = new HashSet<>();
        for(int j=0; j<m; j++)
            elems.add(Integer.parseInt(scan.next()));
        basketList.add(elems);
    }
}
public static void settingPair() {
    int size = basketList.size();
    for(int i=0; i<size; i++) {
        Iterator<HashSet<Integer>> iter = basketList.iterator(); // error
    }
}

You can simply interate over your Sets in your List with a nested loop as below :

for (HashSet<Integer> set : basketList) {
       for (Integer i : set) {
            System.out.println(i);
        }
}

Alternatively, if you want to have an Iterator for each Set in your list, you can do it as below :

for (int i = 0 ; i < basketList.size(); i++) {
      Iterator<Integer> iter = basketList.get(i).iterator(); 
      ...
}

Or :

for (HashSet<Integer> set : basketList) {
    Iterator<Integer> iter = set.iterator();
    ...
}

Can you try this? You can make it simple by using iterator method.

HashSet<Integer> set1 = new HashSet<>(Arrays.asList(1, 2));
HashSet<Integer> set2 = new HashSet<>(Arrays.asList(3, 4));

List<HashSet<Integer>> list = new ArrayList<>(Arrays.asList(set1, set2));

// make iterator
Iterator<HashSet<Integer>> iterator = list.iterator();

while(iterator.hasNext()) {

    // get element(HashSet) in iterator
    HashSet<Integer> element = iterator.next();

    for (Integer intValue : element) {
        // access element in HashSet
        System.out.println(intValue);
    }
}

UPDATE: You should to get the element from basketList and create an iterator.

like this:

public static void settingPair() {
    int size = basketList.size();
    for (int i = 0; i < size; i++) {
        // get the element from basketList
        HashSet<Integer> element = basketList.get(i);

        // create iterator
        Iterator<Integer> iterator = element.iterator();
    }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM