【问题标题】:Map to Charsequence[] but not in order映射到 Charsequence[] 但不是按顺序
【发布时间】:2013-07-30 12:56:42
【问题描述】:

我有一个 Map 并使用

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

但是 charsequence[0] 和 map 0 位置的值没有变化。如何在字符序列和地图中获得相同的值。 我也试过这个

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

【问题讨论】:

  • 您能否提供一个示例,说明您的输入和预期输出?
  • 0-treatmentListMap 1-treatmentListMap.......in charsequence[0]=vitamins im expecting for Iron

标签: java android


【解决方案1】:

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

这篇文章:

Does Java's LinkedHashMap maintain the order of keys?

为您提供更多信息。

【讨论】:

    【解决方案2】:

    正如用户 1111284 所建议的,它非常有效。请看下面的代码

    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);
        }
    }
    

    }

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-28
        • 1970-01-01
        • 1970-01-01
        • 2012-02-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多