java - 如何将两个 String[] 相互映射

标签 java android string dictionary

我正在开发一个 Android 应用程序。我正在使用 HashMap 将两个数组相互映射。我将这些数组更改为 String[],并将它们映射在一起。它应该返回值,但它返回 null。我不确定我哪里出错了。我在网上搜索过,但没有找到任何有用的东西。我的代码如下:

StationList.java 的一部分

Spinner2.setOnItemSelectedListener(new OnItemSelectedListener() {

        public void onItemSelected(AdapterView<?> arg0, View arg1,
                int arg2, long arg3) {
            // TODO Auto-generated method stub

                String selectedValue = arg0.getItemAtPosition(arg2).toString();

                String[] Yellow_ID = getResources().getStringArray(R.array.Yellow_ID);
                String[] Yellow_Li = getResources().getStringArray(R.array.Yellow_Line);

                Map<String[], String[]> myMap = new HashMap<String[], String[]>();
                    myMap.put(Yellow_Li, Yellow_ID);

                String[] value = myMap.get(selectedValue);
                tv12.setText(String.valueOf (value));




        }

ValueTextView 中返回 null。我认为这是由于值没有相互映射。如果您能给我任何帮助,我将不胜感激。

最佳答案

根据您检索值的方式,您希望在填充 HashMap 时做更多类似的事情

Map<String, String> myMap = new HashMap<String, String>();
for (int i = 0; i < Yellow_Li.length(); i++) {
     myMap.put(Yellow_Li[i], Yellow_ID[i]);
}
String value = myMap.get(selectedValue);

我假设字符串数组的大小相同,所以如果它们不同,您应该添加该逻辑。

此外,如果数组的大小相同,您可以这样操作,这样您就不必构建 HashMap :

int index = -1;
for (int i = 0; i < Yellow_Li.length(); i++) {
    if (Yellow_Li[i].equals(selectedValue)) {
        index = i;
        break;
    }
}

String value = Yellow_ID[index]; //should do a check for -1 before you try to assign "value"

关于java - 如何将两个 String[] 相互映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19146908/

相关文章:

java - 在 JAXB 中表示多个元素名称

java - 是否可以在 Eclipse 调试器的值列中显示 toString() 结果?

java - Java 中从命令行接收输入

java - java中的转义*字符

java - Spring security 阻止 css、js 文件加载到 jsp 页面上

android - 在 kotlin 中创建常量文件的最佳做法是什么

java - 更改抽屉导航的默认选定项目(Android - Java)

android - 自动滚动回收 View slider

c++ - 重载字符串的插入和提取运算符

javascript - 在 JavaScript 中使用数组