Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何转换<;字符串数组>;转换为哈希映射_Android_Arrays_Hashmap - Fatal编程技术网

Android 如何转换<;字符串数组>;转换为哈希映射

Android 如何转换<;字符串数组>;转换为哈希映射,android,arrays,hashmap,Android,Arrays,Hashmap,它是天气应用程序代码的一部分 我用strings.xml编写了以下代码,但现在我想用java文件编写。我不知道如何在HashMap中编写以下代码并从中获取值 以下是我的XML中的字符串数组 <!-- Weather condtion 5,6 together with Dress --> <!-- Weather condtion 11,12 together with Dress --> <string-array name="eleven"

它是天气应用程序代码的一部分

我用strings.xml编写了以下代码,但现在我想用java文件编写。我不知道如何在
HashMap
中编写以下代码并从中获取值

以下是我的XML中的
字符串数组

   <!-- Weather condtion 5,6 together with Dress -->
    <!-- Weather condtion 11,12 together with Dress -->
    <string-array name="eleven">
        <item name="dress_6">dress_6</item>
        <item name="dress_0">dress_0</item>
        <item name="dress_1">dress_1</item>
    </string-array>
    <!-- Weather condtion 9 together with Dress -->
    <string-array name="nine">
        <item name="dress_6">dress_6</item>
        <item name="dress_4">dress_4</item>
        <item name="dress_14">dress_14</item>
    </string-array>
    <!-- Weather condtion 5,6 together with Dress -->
    <string-array name="five">
        <item name="dress_2">dress_2</item>
        <item name="dress_8">dress_8</item>
        <item name="dress_6">dress_6</item>
    </string-array>
    <!-- condtion 2 -->
    <string-array name="two">
        <item name="dress_11">dress_11</item>
        <item name="dress_5">dress_5</item>
        <item name="dress_0">dress_0</item>
    </string-array>
    <string-array name="twentyFive">
        <item name="dress_0">dress_0</item>
        <item name="dress_3">dress_3</item>
        <item name="dress_8">dress_8</item>
    </string-array>
    <string-array name="twentySix">
        <item name="dress_12">dress_12</item>
        <item name="dress_13">dress_13</item>
        <item name="dress_5">dress_5</item>
    </string-array>
    <string-array name="thirtySix">
        <item name="dress_11">dress_11</item>
        <item name="dress_9">dress_9</item>
        <item name="dress_4">dress_4</item>
    </string-array>
    <string-array name="thirtySeven">
        <item name="dress_12">dress_12</item>
        <item name="dress_13">dress_13</item>
        <item name="dress_3">dress_3</item>
    </string-array>

礼服6
礼服
礼服1
礼服6
礼服4
礼服14
礼服2
礼服
礼服6
礼服11
礼服
礼服
礼服
礼服3
礼服
礼服12
礼服13
礼服
礼服11
礼服
礼服4
礼服12
礼服13
礼服3
让我们试试这个:

import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.converters.Converter;
import com.thoughtworks.xstream.converters.MarshallingContext;
import com.thoughtworks.xstream.converters.UnmarshallingContext;
import com.thoughtworks.xstream.io.HierarchicalStreamReader;
import com.thoughtworks.xstream.io.HierarchicalStreamWriter;

import java.util.AbstractMap;
import java.util.HashMap;
import java.util.Map;

public class Test {

public static void main(String[] args) {

    Map<String,String> map = new HashMap<String,String>();
    map.put("name","chris");
    map.put("island","faranga");

    XStream magicApi = new XStream();
    magicApi.registerConverter(new MapEntryConverter());
    magicApi.alias("root", Map.class);

    String xml = magicApi.toXML(map);
    System.out.println("Result of tweaked XStream toXml()");
    System.out.println(xml);

    Map<String, String> extractedMap = (Map<String, String>) magicApi.fromXML(xml);
    assert extractedMap.get("name").equals("chris");
    assert extractedMap.get("island").equals("faranga");

}

public static class MapEntryConverter implements Converter {

    public boolean canConvert(Class clazz) {
        return AbstractMap.class.isAssignableFrom(clazz);
    }

    public void marshal(Object value, HierarchicalStreamWriter writer, MarshallingContext context) {

        AbstractMap map = (AbstractMap) value;
        for (Object obj : map.entrySet()) {
            Map.Entry entry = (Map.Entry) obj;
            writer.startNode(entry.getKey().toString());
            Object val = entry.getValue();
            if ( null != val ) {
                writer.setValue(val.toString());
            }
            writer.endNode();
        }

    }

    public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) {

        Map<String, String> map = new HashMap<String, String>();

        while(reader.hasMoreChildren()) {
            reader.moveDown();

            String key = reader.getNodeName(); // nodeName aka element's name
            String value = reader.getValue();
            map.put(key, value);

            reader.moveUp();
        }

        return map;
    }

}

}
import com.thoughtworks.xstream.xstream;
导入com.thoughtworks.xstream.converters.Converter;
导入com.thoughtworks.xstream.converters.MarshallingContext;
导入com.thoughtworks.xstream.converters.UnmarshallingContext;
导入com.thoughtworks.xstream.io.HierarchycalStreamReader;
导入com.thoughtworks.xstream.io.HierarchycalStreamWriter;
导入java.util.AbstractMap;
导入java.util.HashMap;
导入java.util.Map;
公开课考试{
公共静态void main(字符串[]args){
Map Map=newhashmap();
地图。放置(“名称”、“克里斯”);
put地图(“岛”、“法兰加”);
XStream magicApi=新的XStream();
registerConverter(新的MapEntryConverter());
magicApi.alias(“根”,Map.class);
字符串xml=magicApi.toXML(map);
System.out.println(“经过调整的XStream toXml()的结果”);
System.out.println(xml);
Map extractedMap=(Map)magicApi.fromXML(xml);
断言extractedMap.get(“name”).equals(“chris”);
断言extractedMap.get(“island”).equals(“faranga”);
}
公共静态类MapEntryConverter实现转换器{
公共布尔canConvert(类clazz){
返回AbstractMap.class.isAssignableFrom(clazz);
}
公共无效封送处理(对象值、HierarchycalStreamWriter编写器、封送上下文){
AbstractMap=(AbstractMap)值;
对于(对象对象对象:map.entrySet()){
Map.Entry=(Map.Entry)obj;
writer.startNode(entry.getKey().toString());
Object val=entry.getValue();
if(null!=val){
writer.setValue(val.toString());
}
writer.endNode();
}
}
公共对象解组(HierarchycalStreamReader读取器,解组上下文){
Map Map=newhashmap();
while(reader.hasMoreChildren()){
reader.moveDown();
String key=reader.getNodeName();//nodeName aka元素的名称
字符串值=reader.getValue();
map.put(键、值);
reader.moveUp();
}
返回图;
}
}
}
查看以了解更多信息。

让我们尝试以下方法:

import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.converters.Converter;
import com.thoughtworks.xstream.converters.MarshallingContext;
import com.thoughtworks.xstream.converters.UnmarshallingContext;
import com.thoughtworks.xstream.io.HierarchicalStreamReader;
import com.thoughtworks.xstream.io.HierarchicalStreamWriter;

import java.util.AbstractMap;
import java.util.HashMap;
import java.util.Map;

public class Test {

public static void main(String[] args) {

    Map<String,String> map = new HashMap<String,String>();
    map.put("name","chris");
    map.put("island","faranga");

    XStream magicApi = new XStream();
    magicApi.registerConverter(new MapEntryConverter());
    magicApi.alias("root", Map.class);

    String xml = magicApi.toXML(map);
    System.out.println("Result of tweaked XStream toXml()");
    System.out.println(xml);

    Map<String, String> extractedMap = (Map<String, String>) magicApi.fromXML(xml);
    assert extractedMap.get("name").equals("chris");
    assert extractedMap.get("island").equals("faranga");

}

public static class MapEntryConverter implements Converter {

    public boolean canConvert(Class clazz) {
        return AbstractMap.class.isAssignableFrom(clazz);
    }

    public void marshal(Object value, HierarchicalStreamWriter writer, MarshallingContext context) {

        AbstractMap map = (AbstractMap) value;
        for (Object obj : map.entrySet()) {
            Map.Entry entry = (Map.Entry) obj;
            writer.startNode(entry.getKey().toString());
            Object val = entry.getValue();
            if ( null != val ) {
                writer.setValue(val.toString());
            }
            writer.endNode();
        }

    }

    public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) {

        Map<String, String> map = new HashMap<String, String>();

        while(reader.hasMoreChildren()) {
            reader.moveDown();

            String key = reader.getNodeName(); // nodeName aka element's name
            String value = reader.getValue();
            map.put(key, value);

            reader.moveUp();
        }

        return map;
    }

}

}
import com.thoughtworks.xstream.xstream;
导入com.thoughtworks.xstream.converters.Converter;
导入com.thoughtworks.xstream.converters.MarshallingContext;
导入com.thoughtworks.xstream.converters.UnmarshallingContext;
导入com.thoughtworks.xstream.io.HierarchycalStreamReader;
导入com.thoughtworks.xstream.io.HierarchycalStreamWriter;
导入java.util.AbstractMap;
导入java.util.HashMap;
导入java.util.Map;
公开课考试{
公共静态void main(字符串[]args){
Map Map=newhashmap();
地图。放置(“名称”、“克里斯”);
put地图(“岛”、“法兰加”);
XStream magicApi=新的XStream();
registerConverter(新的MapEntryConverter());
magicApi.alias(“根”,Map.class);
字符串xml=magicApi.toXML(map);
System.out.println(“经过调整的XStream toXml()的结果”);
System.out.println(xml);
Map extractedMap=(Map)magicApi.fromXML(xml);
断言extractedMap.get(“name”).equals(“chris”);
断言extractedMap.get(“island”).equals(“faranga”);
}
公共静态类MapEntryConverter实现转换器{
公共布尔canConvert(类clazz){
返回AbstractMap.class.isAssignableFrom(clazz);
}
公共无效封送处理(对象值、HierarchycalStreamWriter编写器、封送上下文){
AbstractMap=(AbstractMap)值;
对于(对象对象对象:map.entrySet()){
Map.Entry=(Map.Entry)obj;
writer.startNode(entry.getKey().toString());
Object val=entry.getValue();
if(null!=val){
writer.setValue(val.toString());
}
writer.endNode();
}
}
公共对象解组(HierarchycalStreamReader读取器,解组上下文){
Map Map=newhashmap();
while(reader.hasMoreChildren()){
reader.moveDown();
String key=reader.getNodeName();//nodeName aka元素的名称
字符串值=reader.getValue();
map.put(键、值);
reader.moveUp();
}
返回图;
}
}
}

查看以获取更多信息。

我认为您正在寻找填充HashMap的方法

您可以使用以下命令

Map<String, List<String>> map = new HashMap<>();
map.put("eleven", Arrays.asList("dress_6", "dress_0", "dress_1"));

您尚未指定确切的用例,但我建议不要硬编码配置。您可以读取现有的string.xml文件,并在启动或首次访问时填充映射

我认为您正在寻找填充HashMap的方法

您可以使用以下命令

Map<String, List<String>> map = new HashMap<>();
map.put("eleven", Arrays.asList("dress_6", "dress_0", "dress_1"));

您尚未指定确切的用例,但我建议不要硬编码配置。您可以读取现有的string.xml文件,并在启动或首次访问时填充映射

谢谢你的回复。我想更详细地了解以下代码,比如如何从中检索值。map.put(“11”,array.asList(“dress_6”,“dress_0”,“dress_1”);提前谢谢。请
for(String item : list) {
    System.out.println("Item: " + item);
}