【问题标题】:Stack Array Data Structure using Java使用 Java 的堆栈数组数据结构
【发布时间】:2022-01-22 08:30:06
【问题描述】:

我正在尝试使用 Java 编写堆栈代码来获取 100 个数据的浏览历史记录。我写了这段代码,但我不确定这个程序是否满足先进后出规则,而且最重要的是我不想为 100 个数据写 100 次 lastvisit = browsing.pop();。我能为它做些什么?

import java.util.Stack;

public class Browser {
    
    public static void main(String[] args) {
       
        Stack<String> browsing = new Stack<>();

        
        browsing.push("google.com");
        browsing.push("facebook.com");
        browsing.push("twitter.com");
        browsing.push("youtube.com");

        System.out.println("Browsing History " + browsing);
        System.out.println();

        
        String lastvisit = browsing.pop();  
        System.out.println("lastvisit " + lastvisit);
        System.out.println("Browsing History " + browsing);
        System.out.println();

       
        lastvisit = browsing.pop();
        System.out.println("lastvisit " + lastvisit);
        System.out.println("Browsing History " + browsing);
        lastvisit = browsing.pop();  
        System.out.println("lastvisit " + lastvisit);
        System.out.println("Browsing History " + browsing);
    }   
}

【问题讨论】:

  • 列表更适合存储浏览历史记录。

标签: java data-structures stack


【解决方案1】:

我用字符串数组更新了代码并添加了@Mureinik 的答案。最终干净的代码:

import java.util.*; 
import java.util.Stack;

public class Browser {
    
    public static void main(String[] args) {
           List<String> urls = Arrays.asList("facebook.com*mehmet.com+google.com-kesimalioglu.com/youtube.com".split("[\\*+/-]"));

        Stack<String> browsing = new Stack<String>();
    for(String str : urls)
        browsing.add(str);
        
        

        System.out.println("Browsing History " + browsing);
        System.out.println();

        
        while (!browsing.empty()) {
    String lastvisit = browsing.pop();  
    System.out.println("lastvisit " + lastvisit);
    System.out.println("Browsing History " + browsing);
    System.out.println();
}

    }
    
}

【讨论】:

    【解决方案2】:

    JDK 的 Stack 类确实实现了“先进后出”(通常称为“后进先出”或 LIFO)规则。

    遍历整个历史的一种方法是遍历堆栈直到它为空:

    while (!browsing.empty()) {
        String lastvisit = browsing.pop();  
        System.out.println("lastvisit " + lastvisit);
        System.out.println("Browsing History " + browsing);
        System.out.println();
    }
    

    【讨论】:

      猜你喜欢
      • 2018-04-27
      • 1970-01-01
      • 1970-01-01
      • 2021-05-29
      • 2018-06-02
      • 1970-01-01
      • 2020-07-08
      • 2023-03-22
      • 2017-04-18
      相关资源
      最近更新 更多