zoukankan      html  css  js  c++  java
  • Java List 的merge

    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 }
  • 相关阅读:
    python datetime unix时间戳以及字符串时间戳转换
    Linux下Shell的for循环语句
    分布式学习最佳实践:从分布式系统的特征开始(附思维导图)
    什么是分布式系统,如何学习分布式系统
    Spring Boot 之发送邮件
    v8是怎么实现更快的 await ?深入理解 await 的运行机制
    分布式=高并发=多线程
    半个月使用rust语言的体验
    Enter Query Mode Search Tricks Using Enter_Query Built-in in Oracle Forms
    How to Log Users Login and Logout Details Through Oracle Forms
  • 原文地址:https://www.cnblogs.com/luweiseu/p/2446595.html
Copyright © 2011-2022 走看看