# Iterating through a List of 'Sets of integers'

5 posts / 0 new
heartin
Iterating through a List of 'Sets of integers'

Create a method that accept a List of 'Sets of integers' and return a list with the sums of all 'Sets of integers' in the input list.

Sample Input and Output:

A sample input will a list with 2 sets with values (1,2,3) and (4,5). The method will have to return a list with values 6 and 9.

HINT:

Method signature will look like:

public List<Integer> addAll(List<Set<Integer>> addList)

ALL THE BEST!!!

sneha
Program

This program has been rewritten below twice using iterator and using for-each.

public static List<Integer> addAll(List<Set<Integer>> addList){
List <Integer> sums=new ArrayList<Integer>();
Set<Integer> total=new HashSet<Integer>();
int sum=0;
Iterator itr=addList.iterator();
while(itr.hasNext()){
total=(Set<Integer>) itr.next();
Iterator setitr=total.iterator();
while(setitr.hasNext()){
sum=sum+(Integer)setitr.next();
}
sums.add(sum);
sum=0;
}
return sums;
}

TESTER METHODS
public static void main(String[] args){

Set<Integer> elem=new HashSet<Integer>();
List<Set<Integer>> addList=new ArrayList<Set<Integer>>();

elem.add(1);elem.add(2);elem.add(3);
addList.add(elem);
elem=new HashSet<Integer>();
elem.add(4);elem.add(5);
addList.add(elem);

printTheList(addAll(addList));

}

public static void printTheList(List<Integer> test){
for(int i:test){
System.out.println(i);
}

}

Was it useful?
heartin
Feedback
1. Set<Integer> total=new HashSet<Integer>(); is not needed, just initialize it to null.
2. Iterator itr=addList.iterator(); should be declared using generics as Iterator<Set<Integer>> itr=addList.iterator(); and then replace total=(Set<Integer>) itr.next(); with Iterator setitr=total.iterator(); inside while.
3. Could you also try using a foreach loop for iterating the list as it is a better and cleaner appraoch?

NOTE: If rewriting, add a note to the original one that it has been rewritten and give the new one a title 'Modified Program after Review with Iterator' and '''Modified Program after Review with ForEach'.

Was it useful?
sneha
Modified Program after Review with Iterator

public static List<Integer> addAll(List<Set<Integer>> addList){
List <Integer> sums=new ArrayList<Integer>();
Set<Integer> total=null;
int sum=0;
Iterator<Set<Integer>> itr=addList.iterator();
while(itr.hasNext()){
total=itr.next();
Iterator<Integer> setitr=total.iterator();
while(setitr.hasNext()){
sum=sum+setitr.next();
}
sums.add(sum);
sum=0;
}
return sums;
}

Was it useful?
sneha
Modified Program after Review with ForEach

public static List<Integer> addAll(List<Set<Integer>> addList){
List <Integer> sums=new ArrayList<Integer>();
int sum=0;
for(Set<Integer> set: addList){
for(int s:set){
sum=sum+s;
}
sums.add(sum);
sum=0;
}
return sums;
}

Was it useful?