sudip.innovates
BAN USERimport java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;
public class MergeSortedList {
public static void main(String[] args) {
List<Queue<String>> list = new ArrayList<>();
Queue<String> q1 = new LinkedList<>();
q1.add("aaa");
q1.add("bbb");
q1.add("ddd");
q1.add("xyxz");
Queue<String> q2 = new LinkedList<>();
q2.add("bbb");
q2.add("ccc");
q2.add("ccc");
q2.add("hkp");
Queue<String> q3 = new LinkedList<>();
q3.add("ddd");
q3.add("eee");
q3.add("fff");
q3.add("lmn");
list.add(q1);
list.add(q2);
list.add(q3);
printSorted(list);
}
static void printSorted(List<Queue<String>> list){
if(list == null) return;
boolean elementPresent = false;
List<String> l = new ArrayList<>();
int prevListId = -1;
do{
int listId = 0;
String min = "";
int i = 0;
elementPresent = false;
for (Queue<String> queue : list) {
if(queue.size() > 0 && min.equals("")){
min = queue.peek();
elementPresent = true;
listId = i;
}else if(queue.size() > 0){
if(min.compareTo(queue.peek()) > 0){
listId = i;
min = queue.peek();
}
elementPresent = true;
}
i++;
}
if(l.contains(min) && elementPresent){
if(prevListId == listId)
l.add(min);
else{
List<String> l2 = new ArrayList<>();
for (String s : l) {
if(!s.equals(min)){
l2.add(s);
}
}
l.clear();
l.addAll(l2);
}
}else if(elementPresent){
l.add(min);
}
if(elementPresent)
list.get(listId).poll();
prevListId = listId;
}while(elementPresent);
System.out.println(l);
}
}
- sudip.innovates April 04, 2017