【问题标题】:the order of values appearing in the drop down getting changed出现在下拉列表中的值的顺序发生变化
【发布时间】:2011-12-11 13:29:48
【问题描述】:

我有一个按数字和字母顺序排序的值数组列表。例如。该列表具有 1、2、5、10、100、A012B、AB、XY、Z 等值(按相同顺序)。

我使用 for 循环将此列表添加到 StringBuffer 并将 Stringbuffer 对象作为字符串返回(通过 sbf.toString()),因为我的方法只能返回 String 类型(根据方法声明)。我无法更改返回类型(它必须是 String,因为我的框架只接受 String 类型)。

返回的值显示在下拉列表中。但是值的顺序正在发生变化,并显示为 1、10、100、2、5、A012B、AB、XY、Z。我希望这些值以与它们在 arraylist 中存在的方式相同的方式显示。你能帮忙吗?

【问题讨论】:

  • 这是不可能的。 StringBuffer 不会对附加的字符串强加任何特殊顺序。附加的字符串按顺序出现。请发布您的循环。
  • 这是填充dropdown控件的代码问题
  • 您自己很容易看到不是 StringBuffer 这样做的。鉴于这些 cmets,我强烈建议您编辑标题以反映真正的问题。如果你想要一个解决方案。
  • 感谢您的建议。我改了标题

标签: java string sorting arraylist stringbuffer


【解决方案1】:

将数据添加到下拉列表的代码似乎正在对数据进行排序。如何创建下拉列表?这是 Swing 应用程序还是 Web 应用程序?在某些网络框架中,下拉列表会自动排序,在这种情况下您必须禁用该默认设置。

StringBuffer 不会自动对字符串进行排序,所以这不是问题。要对此进行测试,请在将 StringBuffer 内容添加到列表之前将其输出到命令行。

【讨论】:

  • 我对此进行了测试,它显示了符合我期望的正确排序(即 1、2、5、10、100、A012B、AB、XY、Z)。我正在使用一个名为“enovia”的框架,这段代码是写在其中的。我不确定框架是否是“字符串”对数据进行排序。
  • 我从未使用过“enovia”,所以我不能确定它的作用。框架必须以某种方式拆分字符串以使其在下拉列表中工作,因此必须在它决定对内容进行排序时。您是否有指向您正在使用的框架版本的文档的链接?
  • 几天前找到了我的问题的解决方案。问题不在于我的程序。 'enovia' 框架的显示程序中还有另一个排序功能,它按字母顺序重新排序值并显示它们。现在修复了这个问题。感谢您的 cmets
  • 这很有趣,因此框架决定自行对数据进行排序。太好了,我很高兴你抓住了它 - 让人想到这些框架在后台发生的所有魔力。
  • 是的,很高兴我得到了它。但正是你的想法让我想到了这些。再次感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多