import java.util.ArrayList; import java.util.Arrays; import java.util.Comparator; import java.util.List; public class Test { public static void main(String[] args) { String[] arr = new String[] { "0,1", "1,10", "0,100", "xx", "1,2" }; Arrays.sort(arr, new Comparator() { @Override public int compare(String o1, String o2) { if (o1.indexOf(",") == -1 || o2.indexOf(",") == -1) { return 0; } String[] temp1 = o1.split(","); String[] temp2 = o2.split(","); if (temp1[0].equals(temp2[0])) { return Integer.parseInt(temp1[1]) - Integer.parseInt(temp2[1]); } else { return Integer.parseInt(temp1[0]) - Integer.parseInt(temp2[0]); } } }); System.out.println(Arrays.toString(arr)); List list1 = new ArrayList(); List list2 = new ArrayList(); List list3 = new ArrayList(); for (int i = 0; i < arr.length; i++) { if (arr[i].indexOf(",") == -1 || "0".equals(arr[i].split(",")[0])) { list1.add(arr[i]); } else { list2.add(arr[i]); } } int maxLength = Math.max(list1.size(), list2.size()); for (int i = 0; i < maxLength; i++) { if (i > list1.size() - 1) { list3.add(""); list3.add(list2.get(i)); } else if (i > list2.size() - 1) { list3.add(list1.get(i)); list3.add(""); } else { list3.add(list1.get(i)); list3.add(list2.get(i)); } } System.out.println(Arrays.toString(list3.toArray())); } }