【发布时间】:2020-02-20 21:46:32
【问题描述】:
我有一个大小的字符串数组列表,例如
[12、10L、10、10R、10S、10L]
输出应该是
[10S、10R、10L、10、12]
所以基本上尺寸必须首先按数字排序 - (1,2,3,4,5 ...等)然后按字母。
我设法让数字排序,所以我上面输入的当前输出是
10L、10、10R、10S、10L、12
如果缺少一个字母,那么它是最大的(见上面的输出 - 10 在 10L 之后 - 10S
我应该如何编写一个允许我这样做的比较器?
考虑一个输入数组,大小。该数组包含 AB 格式的产品尺寸,其中:
A是强制整数 B是[S,R,L]中的可选字符 大小必须先按A从小到大排序,再按S按B排序
【问题讨论】:
-
很有可能正确的方法是将每个
String解析为一个专用类,该类表示它是一个扩展Comparable以提供正确的compare方法。另外,为什么 S 应该小于 R 并且 R 应该小于 L?按字母顺序正好相反,那么这里的规则是什么? -
这些是规则,Small、Regular 和 Large,我应该提到它的衣服,这就是为什么它们会这样
-
在上面的例子中,“12S”会落在哪里?在“10”和“12”之间?还是在“10L”和“10”之间?
-
考虑一个输入数组,大小。此数组包含格式为 AB 的产品尺寸,其中: A 是强制整数 B 是 [S,R,L] 中的可选字符 尺寸必须首先按 A 从小到大排序,然后按 S 的顺序按 B
-
@Mivakes:编写一个实现
Comparable<Size>的Size类可能是最干净的。然后去掉List<String>,改用List<Size>。
标签: java string sorting arraylist comparator