我有一个List<String> list
,它被初始化为一个arrayList。也就是说,
List<String>list = new ArrayList();
它有以下要素。
[1,bread, 1,turkey, 10,potato, 11,plum, 12,carrot, 2,milk, 2,rice]
我想对列表进行排序,以便数字按升序排列。例如,
[1,bread,1 turkey,2,milk,2,rice,10,potato,11,plum,12,carrot]
我该怎么做?
答案 0 :(得分:2)
Java是一种面向对象的语言,您应该使用它。
因此,请创建一个包含两个字段的新类:int
和String
。
现在解析字符串并创建对象,即1,bread
被解析为int
值1
和String
值bread
。
接下来,让您的类实现Comparable
,并实现compareTo
方法,按int
值对对象进行排序。
最后,现在List<String>
已转换为List<MyObj>
,请致电Collections.sort(list)
。
答案 1 :(得分:2)
您不是要尝试对List
中的元素进行排序 - 您尝试对对元素进行排序。你不能用一个简单的sort
来做到这一点。你需要做的是:
int
和String
。使类实现Comparable
。int
字段以获取所需的顺序。如果int
字段相等,您必须决定比较器将执行的操作(您希望String
字段按升序排列吗?)创建一个List<YourClass>
,其大小是原始列表的一半,方法是成对浏览源列表,例如
for (int i = 0; i < list.size() - 1; i += 2) {
通过将YourClass
转换为list.get(i)
并使用int
作为list.get(i+1)
字段
String
}
对新列表进行排序
List<String>
并添加List<YourClass>
转化String
,然后int
字段String
来重新创建YourClass
{1}},到新列表。我不知道您打算使用String
列表做什么,但在大多数情况下,如果您尽快创建List<YourClass>
列表,它将使您的程序更容易,并且在整个程序的其余部分使用YourClass
个对象