Java 在jcombobox中使用linkedhashset?
我正在尝试使用MVC设计模式创建一个程序。在我的模型中,我创建了一组字符串。字符串仅由大约45个区域设置组成 在我看来,我正在创建一个JComboBox。我想按照45个唯一区域设置的顺序使用它们,所以我使用的是LinkedHashSet 我在尝试将区域设置传递到JComboBox时遇到困难,有一些事情我不确定 编辑:我想知道的主要事情是如何将我的设置放入JComboBox。下面是我写这篇文章时想到的几个其他问题。如果您愿意,请随时回答Java 在jcombobox中使用linkedhashset?,java,swing,jcombobox,linkedhashset,Java,Swing,Jcombobox,Linkedhashset,我正在尝试使用MVC设计模式创建一个程序。在我的模型中,我创建了一组字符串。字符串仅由大约45个区域设置组成 在我看来,我正在创建一个JComboBox。我想按照45个唯一区域设置的顺序使用它们,所以我使用的是LinkedHashSet 我在尝试将区域设置传递到JComboBox时遇到困难,有一些事情我不确定 编辑:我想知道的主要事情是如何将我的设置放入JComboBox。下面是我写这篇文章时想到的几个其他问题。如果您愿意,请随时回答 我应该使用一套,它是正确的集合 如果我使用LinkedHas
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
就我个人而言,我会创建我自己的组合框模型,由集合
支持。这样,您就不需要将集
转换为其他类型的结构,并且可以节省(少量)内存
有什么建议吗
阅读教程
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()));