【发布时间】:2011-07-04 09:43:28
【问题描述】:
我有一个已经根据数值排列的字符串列表。 现在我想按以下方式对这些字符串进行分组。
假设我有一个如下所示的文本文件:
数据库
eb
光盘
edd
ab
ebc
解码器
教育局
cda
我想以这样的方式订购它:
数据库
解码器
eb
ebc
edd
教育局
光盘
光盘
acb
所以你可以看到它必须按字符串的字母分组并将它们堆叠在一起。
完成这项任务最有效的方法是什么?
更新。 如您所见,所需的顺序不是字母顺序,包括反向。正如我所提到的,目标是对字符串进行分组,并按首次出现对其进行排序。对于这个例子,我使用字母来简化我试图解决的(很多)更复杂的问题。这里要关注的是每个字符串的字母出现的顺序。按特定顺序分组,而不是排序。
【问题讨论】:
-
字符串的顺序是否相关?或者他们可能只是按字母顺序排序,在这种情况下你也会得到分组? - 例如,您的输入以该顺序具有
edd, ebc, edb,但您所需的输出将是ebc, edd, edb。你怎么得到那个订单?它既不是自然的(字母),也不是输入的顺序。 -
@joel_gil,这似乎是颠倒的顺序。您是否考虑过使用逆序?
-
大家好,'e' 字母的顺序是:eb, edd, ebc, edb。所需的输出(对于该字母)是:eb,ebc,edd,edb。原因是eb首先出现,所以我希望其余以'eb *'开头的顺序出现,因为已经“加权”了,我必须保持这个顺序。不是倒序,顺序与字母无关,而是先出现。
-
定义自己的
Comparator,然后使用Collections.sort() -
@joel_gil:如果你只是向我们展示你真正的问题而不是用字母“简化”,这个问题会更清楚。
标签: java algorithm string grouping