Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在jcombobox中使用linkedhashset?_Java_Swing_Jcombobox_Linkedhashset - Fatal编程技术网

Java 在jcombobox中使用linkedhashset?

Java 在jcombobox中使用linkedhashset?,java,swing,jcombobox,linkedhashset,Java,Swing,Jcombobox,Linkedhashset,我正在尝试使用MVC设计模式创建一个程序。在我的模型中,我创建了一组字符串。字符串仅由大约45个区域设置组成 在我看来,我正在创建一个JComboBox。我想按照45个唯一区域设置的顺序使用它们,所以我使用的是LinkedHashSet 我在尝试将区域设置传递到JComboBox时遇到困难,有一些事情我不确定 编辑:我想知道的主要事情是如何将我的设置放入JComboBox。下面是我写这篇文章时想到的几个其他问题。如果您愿意,请随时回答 我应该使用一套,它是正确的集合 如果我使用LinkedHas

我正在尝试使用MVC设计模式创建一个程序。在我的模型中,我创建了一组字符串。字符串仅由大约45个区域设置组成

在我看来,我正在创建一个JComboBox。我想按照45个唯一区域设置的顺序使用它们,所以我使用的是LinkedHashSet

我在尝试将区域设置传递到JComboBox时遇到困难,有一些事情我不确定

编辑:我想知道的主要事情是如何将我的设置放入JComboBox。下面是我写这篇文章时想到的几个其他问题。如果您愿意,请随时回答

  • 我应该使用一套,它是正确的集合
  • 如果我使用LinkedHashSet,它是正确的实现吗
  • 我是否正确使用组合框
  • 有什么建议吗
  • 我对数据结构了解不多,有什么好的资源吗
  • 以下是我已经在使用的代码:

    看法

    private JComboBox m_selectLocale=newjcombobox(getLocales());
    LinkedHashSet getLocales(){
    System.out.println(“运行”);
    Set localesSet=m_model.getLocales();
    LinkedHashSet locales=新LinkedHashSet(LocaleSet);
    返回地点;
    }
    
    模型

    private static Set localeSet=new LinkedHashSet(Arrays.asList(“All”、“ar-ae”、“ar-sa”、“cs-cz”、“da-dk”、“de-at”、“de-ch”、“de-de”、“el-gr”、“en-ae”、“en-au”);
    公共SetgetLocales(){
    返回localeSet;
    }
    
    我相信你可以这样做:

    m_selectLocale = new JComboBox(new DefaultComboBoxModel(new Vector<String>(getLocales())));
    
    我相信这会为你创造一个新的ComboBoxModel


    FWIW,我认为OrderedSet(如LinkedHashSet)是一个很好的选择,若您想保留选项的插入顺序的话。例如,如果您想在组合框中有一个按字母顺序排列的选项列表,您可能需要使用OrderedSet,它使用集合成员的自然顺序,如TreeSet。

    我相信您可以这样做:

    m_selectLocale = new JComboBox(new DefaultComboBoxModel(new Vector<String>(getLocales())));
    
    我相信这会为你创造一个新的ComboBoxModel

    FWIW,我认为OrderedSet(如LinkedHashSet)是一个很好的选择,若您想保留选项的插入顺序的话。例如,如果您想在组合框中有一个按字母顺序排列的选项列表,您可能需要使用OrderedSet,它使用集合成员的自然顺序,如TreeSet

    我应该使用一套,它是正确的集合

    这将取决于你希望实现的目标<代码>设置将保证唯一性。基于有限的信息,我认为这是一个不错的选择

    如果我使用LinkedHashSet,它是正确的实现吗

    同样,这将取决于你想要实现什么。任何链接结构都非常适合串行访问(从开始移动到结束),但不适合随机访问(跳入列表和任意点)

    这可能会使它成为与组合框一起使用的错误选择

    我是否正确使用组合框

    考虑到代码不会编译,可能不会
    JComboBox
    采用
    ComboxModel
    数组或
    Vector
    ,而不是任何类型的
    Set

    就我个人而言,我会创建我自己的组合框模型,由
    集合
    支持。这样,您就不需要将
    转换为其他类型的结构,并且可以节省(少量)内存

    有什么建议吗

    阅读教程

    我对数据结构了解不多,有什么好的资源吗

    根据最后一个问题

    我应该使用一套,它是正确的集合

    这将取决于你希望实现的目标<代码>设置将保证唯一性。基于有限的信息,我认为这是一个不错的选择

    如果我使用LinkedHashSet,它是正确的实现吗

    同样,这将取决于你想要实现什么。任何链接结构都非常适合串行访问(从开始移动到结束),但不适合随机访问(跳入列表和任意点)

    这可能会使它成为与组合框一起使用的错误选择

    我是否正确使用组合框

    考虑到代码不会编译,可能不会
    JComboBox
    采用
    ComboxModel
    数组或
    Vector
    ,而不是任何类型的
    Set

    就我个人而言,我会创建我自己的组合框模型,由
    集合
    支持。这样,您就不需要将
    转换为其他类型的结构,并且可以节省(少量)内存

    有什么建议吗

    阅读教程

    我对数据结构了解不多,有什么好的资源吗


    根据最后一个问题

    Gee,那是一大堆问题。你想在这个问题上回答哪一个?对不起,写这个问题时我脑子里突然冒出很多东西。我想知道的主要事情是如何将模型中的集合放入JComboBox。一旦我的程序运行起来,也许我可以重构以获得最佳实践?“我想知道的主要事情是……”编辑问题!如果你想使用这个实现,你必须创建自己的
    ComboBoxModel
    。我不确定你到底在问什么:我的意思是,在客户端代码中使用hashSet完全是你根据自己的用例选择的。JComboBox已经有一个模型:
    DefaultComboBoxModel
    。如果您正在讨论这个
    组合框
    模型,那么您可以根据需要实现您的模型。对于这两种情况,哪种实现更好仍在用例的论文中
    HashSet
    不会在维护任何顺序时回复应答,
    TreeSet
    会在每次操作时回复应答,
    O(log n)
    ,而
    LinkedHashSet
    在维护顺序时没有承诺提供
    O
    
    m_selectLocale = new JComboBox(new DefaultComboBoxModel(new Vector<String>(getLocales())));
    
    m_selectLocale = new JComboBox(new Vector<String>(getLocales()));