映射到Charsequence []但不按顺序

时间:2013-07-30 12:56:42

标签: java android

我正在使用地图并使用

转换为charsequence []
final CharSequence[] treatmentNameList = treatmentListMap.keySet().toArray(new CharSequence[treatmentListMap.size()]);

但是,charsequence [0]和地图0的位置值不是变化的。如何在charsequence和map中获得相同的值。  我也尝试了这个

final CharSequence[] treatmentNameList = treatmentListMap.keySet().toArray(new CharSequence[0]);

3 个答案:

答案 0 :(得分:1)

您正在获得密钥Set。集合通常不保证任何订单,因此不同调用的顺序不同。如果您能够控制正在使用的地图的实现,那么LinkedHashMap可能会更幸运。有关它们的更多信息,请参阅Javadocs。

这篇文章:

Does Java's LinkedHashMap maintain the order of keys?

为您提供更多信息。

答案 1 :(得分:1)

正如user1111284所建议的那样,它完美无缺。请查看以下代码

public class MapToCharSequenceTest {

public static void main(String[] args){
    LinkedHashMap<String,String> contents = new LinkedHashMap<String,String>();

    contents.put("brass","rod");
    contents.put("Silver","spoon");
    contents.put("gold","ring");
    contents.put("iron","plate");
    Set<String> set = contents.keySet();
    final CharSequence[] charsequence  = set.toArray( new CharSequence[contents.size()]);
    for(CharSequence c : charsequence){
        System.out.println(c);
    }
}

}

答案 2 :(得分:0)

请阅读CharSequence的javadoc。你看过http://docs.oracle.com/javase/6/docs/api/java/lang/CharSequence.html吗?