对两个整数的ArrayLists进行排序

时间:2013-11-17 15:53:32

标签: java sorting

我需要对两个ArrayList进行排序。例如,给定

  • list x = 4 6 9 9
  • list y = 4 5 8 11

结果需要是4 5 6 8 9 9 11.

我已经有了这个:

public static void main(String[] args) {
    ArrayList<Integer> a = new ArrayList<Integer>();

    a.add(1);
    a.add(4);
    a.add(9);
    a.add(16);

    ArrayList<Integer> b = new ArrayList<Integer>();

    b.add(4);
    b.add(7);
    b.add(9);
    b.add(9);
    b.add(11);

    ArrayList<Integer> c = new ArrayList<Integer>();
    c.addAll(a);
    c.addAll(b);

    int smallest = c.get(0);

    for (int i = 0; i < c.size(); i++) {

        if (c.get(i) < smallest) {

            smallest = c.get(i);
        }
    }

2 个答案:

答案 0 :(得分:1)

Collections.sort(arrayList);

适用于您的案例Collections.sort( c );

我在这里遗漏了什么吗?

答案 1 :(得分:0)

实际上,您使用的代码如下:

int smallest = c.get(0);

for (int i = 0; i < c.size(); i++) {

    if (c.get(i) < smallest) {

        smallest = c.get(i);
    }
}

它填充最小的元素而不是对列表进行排序。

您可以更改for循环,

来自

for (int i = 0; i < c.size(); i++) {

    if (c.get(i) < smallest) {

        smallest = c.get(i);
    }
}

        System.out.println("Before sorting-->" +c );
    for (int i = 0; i < c.size()-1; i++) {
       for(int j=i+1; j <c.size();j++)
       {
           if(c.get(i) > c.get(j))
           {
               int temp = c.get(j);
               c.set(j, c.get(i));
               c.set(i, temp);
           }
       }
    }
    System.out.println("After sorting-->" +c );

控制台输出:

Before sorting-->[1, 4, 9, 16, 4, 7, 9, 9, 11]
After sorting-->[1, 4, 4, 7, 9, 9, 9, 11, 16]

OR

您可以使用 Collections.sort(List<Integer>) 对列表进行排序。

像,

    List<Integer> xList = Arrays.asList(4,6,9,9);
    List<Integer> yList = Arrays.asList(4,5,8,11);
    List<Integer> result = new ArrayList<Integer>();

    result.addAll(xList);
    result.addAll(yList);

    System.out.println("Before sorting-->" +result );

    Collections.sort(result);
    System.out.println("After sorting-->" +result );

在控制台输出==&gt;

Before sorting-->[4, 6, 9, 9, 4, 5, 8, 11]
After sorting-->[4, 4, 5, 6, 8, 9, 9, 11]