title: Merge Sort with ArrayList in Java
body: <p>I am trying to merge these ArrayLists. list3 is the final one. Everything is working fine, but the last number ,400, wont show up in the final array. I have no clue why or what to do. I'm trying to get the ArrayList's sorted and I'm almost done except for that last number that wont show up.</p>
  
  <pre><code>import java.util.ArrayList;
  public class TextLab12st
  {
      public static void main(String args[])
  {
      int jsaList1[] = {101, 105, 115, 125, 145, 165, 175, 185, 195, 225, 235, 275, 305, 315, 325, 335, 345, 355, 375, 385};
      int jsaList2[] = {110, 120, 130, 140, 150, 160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 270, 280, 320, 350, 400};
  
      Array list1 = new Array(jsaList1,"List #1");
      Array list2 = new Array(jsaList2,"List #2");
      Array list3 = new Array("Merged List");
  
      list3.merge(list1,list2,list3);
  
      list1.display();
      list2.display();
      list3.display();
  
  }
  
  }
  
  class Array
  {
  private ArrayList&lt;Integer&gt; list;
  private int size;
  private String listName;
  
  public Array(String ln)
  {
      list = new ArrayList&lt;Integer&gt;();
      size = 0;
      listName = ln;
  }
  
  public Array(int[] jsArray, String ln)
  {
      list = new ArrayList&lt;Integer&gt;();
      size = jsArray.length;
      listName = ln;
      for (int j = 0; j &lt; size; j++)
          list.add( new Integer( jsArray[j] ));
  }
  
  public void display ()
  {
      System.out.println("\n" + listName + ":\n");
      System.out.println(list + "\n");
  }
  
  public void merge(Array that, Array theOther, Array result)
  {
      {
          // Merge both halves into the result array
          // Next element to consider in the first array
          int iFirst = 0;
          // Next element to consider in the second array
          int iSecond = 0;
  
          // Next open position in the result
          int j = 0;
          // As long as neither iFirst nor iSecond is past the end, move the
          // smaller element into the result.
          while (iFirst &lt; that.size &amp;&amp; iSecond &lt; theOther.size) 
          {
              if (that.list.get(iFirst) &lt; theOther.list.get(iSecond)) 
              {
                  result.list.add(that.list.get(iFirst));
                  iFirst++;
              } 
              else 
              {
                  result.list.add(theOther.list.get(iSecond));
                  iSecond++;
              }
              j++;
          }
  
      }
  
  }
  </code></pre>
  
  <p>}</p>