<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Java集合-Stack

          共 3674字,需瀏覽 8分鐘

           ·

          2021-03-09 23:07

          點(diǎn)擊關(guān)注,與你共同成長(zhǎng)!


          Java集合-Stack

          Stack(java.util.Stack)類是典型的棧數(shù)據(jù)結(jié)構(gòu),可以從頭部插入,讀取和移除元素。Stack是List接口的一個(gè)實(shí)現(xiàn),但是很少使用Stack作為L(zhǎng)ist- 除非需要檢查當(dāng)前存儲(chǔ)在Stack中的所有元素。

          注意,Stack類是Vector的子類,Vector是java中一個(gè)古老的同步類, 這種同步會(huì)增加對(duì)Stack中所有方法的調(diào)用的開銷。另外,Vector還使用了幾個(gè)古老的java部分(不再推薦),支持Iterator的Enumeration ,如果為了避免這種問(wèn)題可以使用Deque。

          Stack基礎(chǔ)

          Stack這數(shù)據(jù)結(jié)構(gòu),是可以在頂部加入元素,并且可以從頂部刪除元素也就是我們說(shuō)的"后進(jìn)先出 (LIFO)"原子,相反的Queue采用的是"先進(jìn)先出(FIFO)"原則,從尾部添加元素,從頭部刪除元素。

          創(chuàng)建Stack

          創(chuàng)建 Stack實(shí)例:

          Stack stack = new Stack();

          使用泛型創(chuàng)建Stack

          創(chuàng)建Stack時(shí)可以指定泛型類型:

          Stack<String> stack = new Stack<String>();
          Stack實(shí)例中只能包含String實(shí)例對(duì)象。

          Stack添加元素

          創(chuàng)建了Stack實(shí)例,就可以往頂部添加元素,添加的元素必須是Stack對(duì)象,使用push()方法添加元素:

          Stack<String> stack = new Stack<String>();
           
          stack.push("1");

          上面例子將String類型的“1”添加到Stack的頂部。

          Stack取出并移除元素

          如果往Stack中添加了元素,則也可以從中取出并移除元素,可以使用pop()方法:

          Stack<String> stack = new Stack<String>();
           
          stack.push("1");
           
          String topElement = stack.pop();

          一旦調(diào)用了pop()方法,則Stack中就不存在此元素了。

          從Stack頂部獲取元素

          可以調(diào)用Stack的peek() 方法查看Stack的第一個(gè)元素,而且并不移除元素:

          Stack<String> stack = new Stack<String>();
           
          stack.push("1");
           
          String topElement = stack.peek();

          執(zhí)行代碼后topElement變量的值是“1”,而且還存在中。

          搜索Stack中元素的位置

          可以通過(guò)Stack的search()方法查找元素的位置,搜索時(shí)使用的是 equals()方法進(jìn)行元素比較,如果元素在頂部則索引位置值為1:

          Stack<String> stack = new Stack<String>();
           
          stack.push("1");
          stack.push("2");
          stack.push("3");
           
          int index = stack.search("3");     //index = 3

          Stack的大小

          可以通過(guò)Stack的size()方法獲取Stack中元素的個(gè)數(shù):

          Stack<String> stack = new Stack<String>();
           
          stack.push("1");
          stack.push("2");
          stack.push("3");
           
          int size = stack.size();

          執(zhí)行代碼后 size的值是3。

          迭代 Stack中的元素

          可以通過(guò) Stack的iterator()方法獲取Iterator,對(duì)Stack進(jìn)行迭代:

          Stack<String> stack = new Stack<String>();
           
          stack.push("123");
          stack.push("456");
          stack.push("789");
           
          Iterator iterator = stack.iterator();
          while(iterator.hasNext()){
              Object value = iterator.next();
          }

          使用Stream的進(jìn)程Stack

          也可以通過(guò)Stream Api處理上的元素。首先通過(guò)Stream()方法從堆棧獲取流。一旦從Stack上獲取了Stream,你們就可以迭代:

          Stack<String> stack = new Stack<String>();
          stack.push("A");
          stack.push("B");
          stack.push("C");
           
          Stream stream = stack.stream();
           
          stream.forEach((element) -> {
              System.out.println(element);  // print element
          });

          使用Stack反轉(zhuǎn)List

          可以使用Stack反正List,首先把List中的元素全部添加到中,然后將List清空,然后迭代Stack,將Stack中的元素取出并移除添加到List中:

          List<String> list = new ArrayList<String>();
          list.add("A");
          list.add("B");
          list.add("C");
          System.out.println(list);
           
          Stack<String> stack = new Stack<String>();
          while(list.size() > 0) {
              stack.push(list.remove(0));
          }
           
          while(stack.size() > 0){
              list.add(stack.pop());
          }
           
          System.out.println(list);

          使用Deque作為Stack

          可以將Deque作為Stack使用,從頭部添加和取出元素:

          Deque<String> dequeAsStack = new ArrayDeque>String>();
           
          dequeAsStack.push("one");
          dequeAsStack.push("two");
          dequeAsStack.push("three");
           
          String one   = dequeAsStack.pop();
          String two   = dequeAsStack.pop();
          String three = dequeAsStack.pop();


          Java集合-Deque

          Java常用注解(Annotation)詳解匯總

          對(duì)于注冊(cè)中心,ZooKeeper、Eureka 哪個(gè)更合適?

          以上,便是今天的分享,希望大家喜歡,覺得內(nèi)容不錯(cuò)的,歡迎「分享」「」或者點(diǎn)擊「在看」支持,謝謝各位。

          瀏覽 49
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  一极a黄色电影 | 黄片福利视频 | 国产伦精品一区二区三区最新章节 | 大屌在线无玛 | 午夜精品午夜 |