如何以数字方式对List <string>列表进行排序?

时间:2016-12-03 04:38:43

标签: java sorting

我有一个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]

我该怎么做?

2 个答案:

答案 0 :(得分:2)

Java是一种面向对象的语言,您应该使用它。

因此,请创建一个包含两个字段的新类:intString

现在解析字符串并创建对象,即1,bread被解析为int1Stringbread

接下来,让您的类实现Comparable,并实现compareTo方法,按int值对对象进行排序。

最后,现在List<String>已转换为List<MyObj>,请致电Collections.sort(list)

答案 1 :(得分:2)

您不是要尝试对List中的元素进行排序 - 您尝试对元素进行排序。你不能用一个简单的sort来做到这一点。你需要做的是:

  1. 定义一个包含两个字段的类,intString。使类实现Comparable
  2. 为类定义比较器,比较int字段以获取所需的顺序。如果int字段相等,您必须决定比较器将执行的操作(您希望String字段按升序排列吗?)
  3. 创建一个List<YourClass>,其大小是原始列表的一半,方法是成对浏览源列表,例如

    for (int i = 0; i < list.size() - 1; i += 2) {

    通过将YourClass转换为list.get(i)并使用int作为list.get(i+1)字段

    来创建String

    }

  4. 对新列表进行排序

  5. 如果需要,请通过浏览List<String>并添加List<YourClass>转化String,然后int字段String来重新创建YourClass {1}},到新列表。
  6. 我不知道您打算使用String列表做什么,但在大多数情况下,如果您尽快创建List<YourClass>列表,它将使您的程序更容易,并且在整个程序的其余部分使用YourClass个对象