I'm trying to go through a linkedlist(which we can call the superlist) which has elements of linked lists(sublists) within it.
The method that adds the elements into both linked lists is:
LinkedList<Object> list = new LinkedList<>();
public void add(Object... item) {
LinkedList<Object> thingie = new LinkedList<>();
for (Object i: item) {
thingie.add(i);
}
list.addAll(thingie);
}
Now I have to write methods to check if there are groups of 1, 2, 3, 4 elements in the sublists by traversing the superlist What I have so far (which is very wrong) is:
LinkedList <Object> ohno = new LinkedList<>();
for (int i = 0; i<list.size(); i++){
ohno = (LinkedList<Object>) list.get(i);
if (int j = 1; j = ohno.size();){
return true;
}
else return false;
}
What you can do is create a method that passes a parameter for the group size in question and finds out if there are any sub lists of size group size.
private static boolean hasSubListsOfSize (LinkedList<Object> superList, final int groupSize)
{
for (int i = 0, size = superList.size(); i < size; i++)
{
LinkedList<Object> subList = (LinkedList<Object>) superList.get(i);
if (subList.size() == groupSize)
{
return true;
}
}
// didn't find any sub lists of the group size
return false;
}
Side Note: As pointed out by @Abhishek your super List is technically not a LinkedList
of LinkedList's
. It is a LinkedList
of Objects
. That's why you have to do the explicit cast to LinkedList to access the "Sub LinkedList's".
If you want a true LinkedList
of LinkedList's
, then you should create the superList like this:
LinkedList<LinkedList<Object>> superList = new LinkedList<LinkedList<Object>>();
If you create it that way, then you will avoid having to do the explicit casts at compile time.