【问题标题】:How to handle better data from HashMap in Java?如何在 Java 中处理来自 HashMap 的更好数据?
【发布时间】:2013-08-13 12:40:28
【问题描述】:

为了用 Java 开发文本编辑器,用户可以打开多个带有对象 JTabbedPane 的文件。然后,我将这些文件存储在HashMap<String,TabManager> 上。 (HashMap 的键),应该是文件名。之后,我将在HashMap 中打开的文件保存在内存中。现在,我需要管理我的标签。例如,如果用户在它选择的选项卡上,显然用户想要更改文本的字体、保存选定的文件、复制它等等。为了管理用户选择的选项卡,我需要一个类来仅从选定的选项卡中获取对象。如JTextPaneFile。基本上,我应该这样做:

    for(Map.Entry<String, TabManager> entry: HashMap.entry)
    {

        String key = entry.getKey();

        tabManager = entry.getValue();

        if(tab.getTabSelected().equals(key))
        {
                            // resquest objects from tab selected by the user
             this.container = tabManager.getJTextPane();
             this.file = tabManager.getFile();
        }

    }

我手上有用户选择的选项卡中的对象。现在,我要处理它。问题是:

  • 我如何处理如此大量的数据?
  • 一直以来,我都有这样的循环来知道用户选择了哪个选项卡?

我如何处理这些数据?

【问题讨论】:

  • 为什么不使用 map.get(key)?
  • 欢迎来到 SO。不幸的是,您的问题对于 SO 来说太宽泛了。请阅读FAQHow to Ask 以获取编写好问题的提示。编写文本编辑器是一项艰巨的工作,如果您还没有处理文件和 UI 元素的策略,那么 SO 将无济于事。

标签: java data-structures hashmap


【解决方案1】:

我看不到你的地图的名称是什么......但假设你有类似的东西:

Map<String, TabManager> map = new HashMap<>();

其中字符串是选项卡的名称,每个选项卡都是唯一的,并且您可以使用 tab.getTabSelected() 获取该名称,然后您可以这样做:

TabManager selectedTab = map.get(tab.getTabSelected());

获取选定的选项卡。

关于您的第二个问题:如何处理大数据...由于您不想每次都读取整个文件并将其复制到内存中,因此您想要:

  • 开始和结束文件指针,以了解您当前正在显示的文件块
  • 缓存每个标签页显示的所有标签页
  • 选择选项卡时打开文件,并且缓存已过时或不覆盖所需的信息,请在不再选择选项卡时将其关闭(和/或一段时间后)。 其他优化也是可能的...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-22
    • 2017-11-23
    相关资源
    最近更新 更多