/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
List<List<Character>> alphabet = new ArrayList<List<Character>>(3);
List<Character> first = new ArrayList<Character>();
first.add('a');
first.add('d');
first.add('g');
first.add('i');
List<Character> second = new ArrayList<Character>();
second.add('b');
second.add('e');
second.add('h');
List<Character> third = new ArrayList<Character>();
third.add('c');
third.add('f');
third.add('j');
alphabet.add(first);
alphabet.add(second);
alphabet.add(third);
List<Character> mergedSoFar = new ArrayList<Character>();
for(int i = 0; i < alphabet.size(); ++i) {
List<Character> sortedLetters = alphabet.get(i);
mergedSoFar = merge(mergedSoFar, sortedLetters);
}
System.
out.
println(mergedSoFar
); }
private static List<Character> merge(List<Character> left, List<Character> right) {
List<Character> merged = new ArrayList<Character>(left.size() + right.size());
int i = 0;
int j = 0;
while (i < left.size() && j < right.size()) {
char leftLetter = left.get(i);
char rightLetter = right.get(j);
int comparison
= Character.
compare(leftLetter, rightLetter
); if (comparison < 0) {
merged.add(leftLetter);
++i;
} else if (comparison > 0) {
merged.add(rightLetter);
++j;
} else {
// letters are same, add both
merged.add(leftLetter);
++i;
merged.add(rightLetter);
++j;
}
}
while(i < left.size()) {
merged.add(left.get(i));
++i;
}
while(j < right.size()) {
merged.add(right.get(j));
++j;
}
return merged;
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCUxpc3Q8TGlzdDxDaGFyYWN0ZXI+PiBhbHBoYWJldCA9IG5ldyBBcnJheUxpc3Q8TGlzdDxDaGFyYWN0ZXI+PigzKTsKCQlMaXN0PENoYXJhY3Rlcj4gZmlyc3QgPSBuZXcgQXJyYXlMaXN0PENoYXJhY3Rlcj4oKTsKCQlmaXJzdC5hZGQoJ2EnKTsKCQlmaXJzdC5hZGQoJ2QnKTsKCQlmaXJzdC5hZGQoJ2cnKTsKCQlmaXJzdC5hZGQoJ2knKTsKCQlMaXN0PENoYXJhY3Rlcj4gc2Vjb25kID0gbmV3IEFycmF5TGlzdDxDaGFyYWN0ZXI+KCk7CgkJc2Vjb25kLmFkZCgnYicpOwoJCXNlY29uZC5hZGQoJ2UnKTsKCQlzZWNvbmQuYWRkKCdoJyk7CgkJTGlzdDxDaGFyYWN0ZXI+IHRoaXJkID0gbmV3IEFycmF5TGlzdDxDaGFyYWN0ZXI+KCk7CgkJdGhpcmQuYWRkKCdjJyk7CgkJdGhpcmQuYWRkKCdmJyk7CgkJdGhpcmQuYWRkKCdqJyk7CgkJYWxwaGFiZXQuYWRkKGZpcnN0KTsKCQlhbHBoYWJldC5hZGQoc2Vjb25kKTsKCQlhbHBoYWJldC5hZGQodGhpcmQpOwoJCQoJCUxpc3Q8Q2hhcmFjdGVyPiBtZXJnZWRTb0ZhciA9IG5ldyBBcnJheUxpc3Q8Q2hhcmFjdGVyPigpOwoJCWZvcihpbnQgaSA9IDA7IGkgPCBhbHBoYWJldC5zaXplKCk7ICsraSkgewoJCQlMaXN0PENoYXJhY3Rlcj4gc29ydGVkTGV0dGVycyA9IGFscGhhYmV0LmdldChpKTsKCQkJbWVyZ2VkU29GYXIgPSBtZXJnZShtZXJnZWRTb0Zhciwgc29ydGVkTGV0dGVycyk7CgkJfQoJCVN5c3RlbS5vdXQucHJpbnRsbihtZXJnZWRTb0Zhcik7Cgl9CgkKCXByaXZhdGUgc3RhdGljIExpc3Q8Q2hhcmFjdGVyPiBtZXJnZShMaXN0PENoYXJhY3Rlcj4gbGVmdCwgTGlzdDxDaGFyYWN0ZXI+IHJpZ2h0KSB7CgkJTGlzdDxDaGFyYWN0ZXI+IG1lcmdlZCA9IG5ldyBBcnJheUxpc3Q8Q2hhcmFjdGVyPihsZWZ0LnNpemUoKSArIHJpZ2h0LnNpemUoKSk7CgkJaW50IGkgPSAwOwoJCWludCBqID0gMDsKCQl3aGlsZSAoaSA8IGxlZnQuc2l6ZSgpICYmIGogPCByaWdodC5zaXplKCkpIHsKCQkJY2hhciBsZWZ0TGV0dGVyID0gbGVmdC5nZXQoaSk7CgkJCWNoYXIgcmlnaHRMZXR0ZXIgPSByaWdodC5nZXQoaik7CgkJCWludCBjb21wYXJpc29uID0gQ2hhcmFjdGVyLmNvbXBhcmUobGVmdExldHRlciwgcmlnaHRMZXR0ZXIpOwoJCQlpZiAoY29tcGFyaXNvbiA8IDApIHsKCQkJCW1lcmdlZC5hZGQobGVmdExldHRlcik7CgkJCQkrK2k7CgkJCX0gZWxzZSBpZiAoY29tcGFyaXNvbiA+IDApIHsKCQkJCW1lcmdlZC5hZGQocmlnaHRMZXR0ZXIpOwoJCQkJKytqOwoJCQl9IGVsc2UgewoJCQkJLy8gbGV0dGVycyBhcmUgc2FtZSwgYWRkIGJvdGgKCQkJCW1lcmdlZC5hZGQobGVmdExldHRlcik7CgkJCQkrK2k7CgkJCQltZXJnZWQuYWRkKHJpZ2h0TGV0dGVyKTsKCQkJCSsrajsKCQkJfQoJCX0KCQl3aGlsZShpIDwgbGVmdC5zaXplKCkpIHsKCQkJbWVyZ2VkLmFkZChsZWZ0LmdldChpKSk7CgkJCSsraTsKCQl9CgkJd2hpbGUoaiA8IHJpZ2h0LnNpemUoKSkgewoJCQltZXJnZWQuYWRkKHJpZ2h0LmdldChqKSk7CgkJCSsrajsKCQl9CgkJcmV0dXJuIG1lcmdlZDsKCX0KfQ==
[a, b, c, d, e, f, g, h, i, j]