fork download
  1. /* package whatever; // don't place package name! */
  2.  
  3. import java.util.*;
  4. import java.lang.*;
  5. import java.io.*;
  6.  
  7. /* Name of the class has to be "Main" only if the class is public. */
  8. class Ideone
  9. {
  10. public static void main (String[] args) throws java.lang.Exception
  11. {
  12. List<List<Character>> alphabet = new ArrayList<List<Character>>(3);
  13. List<Character> first = new ArrayList<Character>();
  14. first.add('a');
  15. first.add('d');
  16. first.add('g');
  17. first.add('i');
  18. List<Character> second = new ArrayList<Character>();
  19. second.add('b');
  20. second.add('e');
  21. second.add('h');
  22. List<Character> third = new ArrayList<Character>();
  23. third.add('c');
  24. third.add('f');
  25. third.add('j');
  26. alphabet.add(first);
  27. alphabet.add(second);
  28. alphabet.add(third);
  29.  
  30. List<Character> mergedSoFar = new ArrayList<Character>();
  31. for(int i = 0; i < alphabet.size(); ++i) {
  32. List<Character> sortedLetters = alphabet.get(i);
  33. mergedSoFar = merge(mergedSoFar, sortedLetters);
  34. }
  35. System.out.println(mergedSoFar);
  36. }
  37.  
  38. private static List<Character> merge(List<Character> left, List<Character> right) {
  39. List<Character> merged = new ArrayList<Character>(left.size() + right.size());
  40. int i = 0;
  41. int j = 0;
  42. while (i < left.size() && j < right.size()) {
  43. char leftLetter = left.get(i);
  44. char rightLetter = right.get(j);
  45. int comparison = Character.compare(leftLetter, rightLetter);
  46. if (comparison < 0) {
  47. merged.add(leftLetter);
  48. ++i;
  49. } else if (comparison > 0) {
  50. merged.add(rightLetter);
  51. ++j;
  52. } else {
  53. // letters are same, add both
  54. merged.add(leftLetter);
  55. ++i;
  56. merged.add(rightLetter);
  57. ++j;
  58. }
  59. }
  60. while(i < left.size()) {
  61. merged.add(left.get(i));
  62. ++i;
  63. }
  64. while(j < right.size()) {
  65. merged.add(right.get(j));
  66. ++j;
  67. }
  68. return merged;
  69. }
  70. }
Success #stdin #stdout 0.1s 320512KB
stdin
Standard input is empty
stdout
[a, b, c, d, e, f, g, h, i, j]