【发布时间】:2015-02-26 15:34:11
【问题描述】:
我有一个ArrayList,每个索引有几个对象。我想特别按一个对象按字母数字顺序对这个列表进行排序。对象是“my_id”,该对象的值可能类似于:1A、10B、11B、2C、205Z 等。
我需要将这些排序出来:1A、2C、10B、11B、205Z。首先对数字部分进行排序,然后对字母部分进行排序。 1,2,3,4,5,... A,B,C,D,E,...
我检查了一些非常有效的字母数字字符串排序: http://sanjaal.com/java/206/java-data-structure/alphanumeric-string-sorting-in-java-implementation/
不幸的是,我只能对该对象进行排序,结果我丢失了ArrayList 中的其他对象。我真的需要一种排序算法,它可以通过我选择的对象重新排列ArrayList 索引并且不会丢失其他对象!
有没有一种方法可以做到这一点?我一直找不到。我认为添加 ArrayList 中的所有对象都是映射字符串很有用:ArrayList<HashMap<String, String>>
[编辑]
我有我的数组:
ArrayList<HashMap<String, String>> al
然后我存储对象:
String[] alphaNumericStringArray = new String[al.size()];
for(int i = 0; i < al.size(); i++)
{
alphaNumericStringArray[i] = al.get(i).get("my_id");
}
我现在对字符串数组进行排序:
// Sort the array now.
Arrays.sort(alphaNumericStringArray, new AlphanumericSorting());
然后我把物体放回去:
for(int i = 0; i < al.size(); i++)
{
HashMap<String, String> map = new HashMap<String, String>();
map.put("my_id", alphaNumericStringArray[i]);
// TODO, need to append the rest of the objects.
al.set(i, map);
}
我知道你在想什么,当我重新映射它时,我不会将所有对象添加回去。这是我目前拥有的,但我想要的是一种对整个列表进行排序的方法,而不仅仅是一个对象“my_id”。我想重新排列索引,这样我就不必在最后重新映射所有内容。
【问题讨论】:
-
为什么会丢失物品?我看不出如何通过对列表进行排序来丢失对象?
-
"ArrayList with multiple objects per index",详细说明...
-
你能发布你的代码吗?也许你的排序正确,但你没有保存你的对象。
-
@waqaslam 操作指的是包含哈希图的列表
-
@UrielArvizu 这就是我的想法,但他没有在任何地方提到这个重要的线索。但是,这仍然是我们的假设。 :)
标签: java android sorting arraylist