1 public List<Integer> merge1(List<Integer> source1, List<Integer> source2) {
2 if (source1.isEmpty()) {
3 return source2;
4 } else if (source2.isEmpty()) {
5 return source1;
6 }
7 List<Integer> source = new ArrayList<>();
8 int source1Idx = 0;
9 int source2Idx = 0;
10 int source1Size = source1.size();
11 int source2Size = source2.size();
12 while (source1Idx < source1Size && source2Idx < source2Size) {
13 Integer source1SmallestElem = source1.get(source1Idx);
14 Integer source2SmallestElem = source2.get(source2Idx);
15 //如果相等,跳过去,取另一个列表的值
16 if (source1SmallestElem.compareTo(source2SmallestElem) == 0) {
17 source1Idx++;
18 } else if(source1SmallestElem.compareTo(source2SmallestElem)<0){
19 source.add(source1SmallestElem);
20 source1Idx++;
21 } else if (source1SmallestElem.compareTo(source2SmallestElem)>0){
22 source.add(source2SmallestElem);
23 source2Idx++;
24 }
25 }
26 source.addAll(source1.subList(source1Idx, source1Size));
27 source.addAll(source2.subList(source2Idx, source2 Size));
28 return source;
29 }