wonderer's program

          everything will be better
          posts - 19, comments - 6, trackbacks - 0, articles - 0
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          《Java學習筆記》--對象容器之ArrayList和LinkedList

          Posted on 2007-12-27 23:05 wonderer 閱讀(3082) 評論(0)  編輯  收藏 所屬分類: java

          去SA面試的時候,面試官問我平時用Java的什么數據結構,答曰:Vector。又問:哪有用過其他的的嗎?例如List和Map之類的。答曰:甚少。(自己汗一個,沒水平)既然不會就要學習啦。

          翻開《Java學習筆記》,里面對對象容器的描述不錯。

          1. ArrayList和LinkedList

          ArrayList使用了數組結構實現List的數據。所以ArraryList用來快速定位對象是非常有效率的。但是如果要對ArraryList中間插入或者刪除,效率會非常低。

          LinkedList使用鏈表來實現的List。所以跟ArrayList相反,LinkedList對于插入和刪除是非常有優勢,反之對于快速定位,是LinkedList的弱項。

          1)ArrayListDemo

          public class ArrayListDemo {
              public static void main(String[] args) {
                  
                  //用Scanner類,可以輕松獲得commander的輸入
                  Scanner scanner = new Scanner(System.in);
                  
                  List<String> list = new ArrayList<String>();
                  
                  //在控制臺輸入,quit退出
                  while(true) {
                      System.out.print("Rokey@console# ");
                      String input = scanner.next();
                      if(input.equals("quit")) {
                          break;
                      }
                      list.add(input);
                  }
                  
                  System.out.print("顯示輸入:");
                  
                  //使用5.0的foreach功能對List進行遍歷
                  for(String s:list) {
                      //5.0的類C的輸出格式
                      System.out.printf("%s ",s);
                  }
              }
          }

          輸出:

          Rokey@console# 一二三
          Rokey@console# 三二一
          Rokey@console# quit
          顯示輸入:一二三 三二一 
          

           

          2)用LinkedList實現的一個字符串棧

          /**
           *
           * @author Rokey
           * 用LinkedList構建一個字符棧,先進先出
           */
          public class StringStack {
          
              private LinkedList<String> linkList;
          
              public StringStack() {
                  linkList = new LinkedList<String>();
              }
          
              public void push(String s) {
                  //將元素加入鏈表第一個位置
                  linkList.addFirst(s);
              }
          
              public String pop() {
                  //刪除鏈表第一個元素,并返回
                  return linkList.removeFirst();
              }
          
              public String top() {
                  //返回鏈表第一個元素,但并不刪除
                  return linkList.getFirst();
              }
          
              public boolean isEmpty() {
                  //檢查鏈表是否為空
                  return linkList.isEmpty();
              }
          }
          public class StringStackDemo {
          
              public static void main(String[] args) {
          
                  //用Scanner類,可以輕松獲得commander的輸入
                  Scanner scanner = new Scanner(System.in);
          
                  StringStack stack = new StringStack();
          
                  //在控制臺輸入,quit退出
                  while (true) {
                      System.out.print("Rokey@console# ");
                      String input = scanner.next();
                      if (input.equals("quit")) {
                          break;
                      }
                      stack.push(input);
                  }
          
                  System.out.print("顯示輸入:");
                  //使用5.0的foreach功能對List進行遍歷
                  
                  while(!stack.isEmpty()) {
                      //5.0的類C的輸出格式
                      System.out.printf("%s ", stack.pop());
                  }
              }
          }

          輸出:

          Rokey@console# 一二三
          Rokey@console# 三二一
          Rokey@console# quit
          顯示輸入:三二一 一二三 
          主站蜘蛛池模板: 关岭| 台北市| 若尔盖县| 青神县| 察雅县| 鸡泽县| 巢湖市| 开远市| 阳原县| 崇义县| 枝江市| 藁城市| 寻乌县| 周宁县| 六枝特区| 怀集县| 德庆县| 新建县| 岳阳市| 灌阳县| 利津县| 家居| 九龙城区| 富民县| 普陀区| 西贡区| 虞城县| 北碚区| 临沂市| 商洛市| 武川县| 隆回县| 开远市| 德清县| 南丹县| 宜川县| 扎囊县| 沙湾县| 西宁市| 大关县| 琼结县|