合并两个有序列表

 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     }
View Code

 

posted @ 2017-09-22 09:13  xiaozhangqq1  阅读(585)  评论(0)    收藏  举报