java中如何将一段字符串按照特定分隔符将其字段值保存在map、table或list中,然后后面通过key获取到对应的value?

时间:2023-01-04 14:23:26
RT:java中如何将一段字符串按照特定分隔符将其字段值保存在map、table或list中,然后后面通过key获取到对应的value?
如:以下字符串,想要的是按照一个一个字段映射关系将其存储到map或list中,通过key(如:field1)能获取到value(aaa)值。
field1=aaa, field2=null, field3=<bbb>, field3=http://test

5 个解决方案

#1


这个不就是分割的事情吗

#2


先按逗号分隔,得到String[] strArr1,然后遍历strArr1按=号分隔,map.put(等号前内容,等号后内容);

#3



String str="field1=aaa, field2=null, field3=<bbb>, field3=http://test";
String[] sArr=str.split(",");
Map<String,List<String>> map=new HashMap<String,List<String>>();
for(String s:sArr){
//针对你这里有重复key的情况不让其覆盖原key的内容而是添加到原key内容上
  String[] ss=s.split("=");
  String key=ss[0];
  String value=ss[1];
  List<String> list=map.get(key);
  if(list==null){
     list=new ArrayList<String>();
  }
  list.add(value);
  map.put(key, list);
}
System.out.println(map);

#4


引用 1 楼 fangmingshijie 的回复:
这个不就是分割的事情吗


我大概知道怎么弄,写出来的感觉有点不太好。
	public static void main(String[] args) {


String s = "[field1=aaa, field2=null, field3=<bbb>, field3=http://test]";
s = s.replace("[", " ");
s = s.replace("]", " ");
s = s.trim();
String st[]=new String[10];
st = s.split(",");
int num = st.length;
Map<String,String> map=new HashMap<String,String>(); 
for (int i=0;i<num;i++){
System.out.println(st[i].trim());

String stt[]=new String[1];
stt = st[i].trim().split("=");
map.put(stt[0], stt[1]);
System.out.println(map.get(stt[0]));
}
}

#5


功能实现是关键,好不好是代码优化问题。

#1


这个不就是分割的事情吗

#2


先按逗号分隔,得到String[] strArr1,然后遍历strArr1按=号分隔,map.put(等号前内容,等号后内容);

#3



String str="field1=aaa, field2=null, field3=<bbb>, field3=http://test";
String[] sArr=str.split(",");
Map<String,List<String>> map=new HashMap<String,List<String>>();
for(String s:sArr){
//针对你这里有重复key的情况不让其覆盖原key的内容而是添加到原key内容上
  String[] ss=s.split("=");
  String key=ss[0];
  String value=ss[1];
  List<String> list=map.get(key);
  if(list==null){
     list=new ArrayList<String>();
  }
  list.add(value);
  map.put(key, list);
}
System.out.println(map);

#4


引用 1 楼 fangmingshijie 的回复:
这个不就是分割的事情吗


我大概知道怎么弄,写出来的感觉有点不太好。
	public static void main(String[] args) {


String s = "[field1=aaa, field2=null, field3=<bbb>, field3=http://test]";
s = s.replace("[", " ");
s = s.replace("]", " ");
s = s.trim();
String st[]=new String[10];
st = s.split(",");
int num = st.length;
Map<String,String> map=new HashMap<String,String>(); 
for (int i=0;i<num;i++){
System.out.println(st[i].trim());

String stt[]=new String[1];
stt = st[i].trim().split("=");
map.put(stt[0], stt[1]);
System.out.println(map.get(stt[0]));
}
}

#5


功能实现是关键,好不好是代码优化问题。