Java List 的merge

it2022-05-08  6

List的merge的基本思路与数组是相同的,但是在具体实现的时候还是有一些困难的。由于List的Iterator没有Prev函数。本文采用简单测量规避了这个问题。

有兴趣的同学参照一下下面的示例。

 

 

 1  package tests;  2   3  import java.util.ArrayList;  4  import java.util.Iterator;  5  import java.util.List;  6   7  /*  8   * a demo of merge to Lists, whose values are both sorted  9    */ 10  public  class mergeLists { 11  12      /** 13       *  @param  args 14        */ 15      public  static  void main(String[] args) { 16          //  two test lists with sequential int values 17         List<Integer> added_list =  new ArrayList<Integer>(); 18         List<Integer> base_list =  new ArrayList<Integer>(); 19          for( int i = 0; i < 20; i+=2){ 20             base_list.add(i); 21         } 22          for( int i = -3; i < 30; i+=3){ 23             added_list.add(i); 24         } 25         System.out.println("base " +base_list); 26         System.out.println("add " + added_list); 27         Iterator<Integer> added_iter = added_list.iterator(); 28         Iterator<Integer> base_iter = base_list.iterator(); 29          int lbase = 0; 30          //  since there is no "Prev" function for Interator, 31           //  we need to use this boolean to record whether 32           //  it needs to move next 33          boolean base_added =  true; 34          //  begin to merge 35          for(;added_iter.hasNext();){ 36              int ladded = added_iter.next(); 37              for(;(base_added && base_iter.hasNext()) || !base_added;){ 38                  if(base_added){ 39                     lbase = base_iter.next(); 40                 } 41                  if(ladded > lbase){ 42                     System.out.print("b"  + lbase + ", "); 43                     base_added =  true; 44                 } 45                  else{ 46                     base_added =  false; 47                     System.out.print("k, "); 48                      break; 49                 } 50             } 51             System.out.print("a" + ladded + ", "); 52         } 53          //  deal with left data in list b 54          for(;(base_added && base_iter.hasNext()) || !base_added;){ 55              if(base_added){ 56                 lbase = base_iter.next(); 57             } 58             System.out.print("b"  + lbase + ", "); 59             base_added =  true; 60         } 61  62     } 63  64 }

 

转载于:https://www.cnblogs.com/luweiseu/archive/2012/04/14/2446595.html


最新回复(0)