wonderer's program

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

          2007年12月27日

          去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
          顯示輸入:三二一 一二三 

          posted @ 2007-12-27 23:05 wonderer 閱讀(3082) | 評論 (0)編輯 收藏

          主站蜘蛛池模板: 德阳市| 米泉市| 克东县| 酉阳| 德惠市| 桦川县| 迁安市| 会同县| 于都县| 宕昌县| 马鞍山市| 普安县| 阿克| 将乐县| 中牟县| 米脂县| 定襄县| 平泉县| 新巴尔虎右旗| 会同县| 长乐市| 阳泉市| 辽源市| 西宁市| 泸定县| 开封县| 山东| 尼玛县| 安阳市| 棋牌| 营山县| 垣曲县| 黎平县| 平定县| 资源县| 商都县| 灌云县| 荥经县| 紫阳县| 读书| 高青县|