永发信息网

编写一个类实现一个接口,将字符串中储存的名值对信息转换成Map对象

答案:2  悬赏:0  手机版
解决时间 2021-03-17 07:49
import java.util.Map;
实现将一个字符串中包含的名值对转换成Map。
字符串的储存方式如下列:
Name1 = Value1;
Name2 = Value2;
各行之间使用换行符进行分割。
Public interface Str2Map()
{
Map getStatus()
}

详细代码
跪求各位大哥大姐帮忙
谢谢
最佳答案
其实可以多利用String的split方法。
换行符的话可以认为是\
和\\r,然后把字符串的每一行拿出来,再对每一行split,得到所需要的键和值。
我写了个例子,功能可能不够完善,不过大问题是没有了,供你参考:
public class Str2MapImpl implements Str2Map {

private String status;

public Map getStatus() {

if(status==null)

return null;

Map statusMap = new HashMap();

String delim = "\
|\\r";

String[] rows = status.split(delim);

for(int i=0;i
String row = rows[i];

if(row.equals(""))

continue;

String[] keyAndValue = row.split("=");

if(keyAndValue.length<2)

continue;

String key = keyAndValue[0];

String value = keyAndValue[1];

if(key.equals("")||value.equals(""))

continue;

statusMap.put(key, value);

}

return statusMap;

}

public void setStatusStr(String status_) {

status = status_;

}

public static void main(String args[]){
//测试用例

Str2MapImpl s2m= new Str2MapImpl();

String str = "a=1\
b=2\\rc=3";

s2m.setStatusStr(str);

Map status = s2m.getStatus();

System.out.println(status);

}
}
全部回答
其实可以多利用string的split方法。 换行符的话可以认为是\ 和\\r,然后把字符串的每一行拿出来,再对每一行split,得到所需要的键和值。 我写了个例子,功能可能不够完善,不过大问题是没有了,供你参考: public class str2mapimpl implements str2map { private string status; public map&lt;string, string&gt; getstatus() { if(status==null) return null; map&lt;string,string&gt; statusmap = new hashmap&lt;string,string&gt;(); string delim = "\ |\\r"; string[] rows = status.split(delim); for(int i=0;i&lt;rows.length;i++){ string row = rows[i]; if(row.equals("")) continue; string[] keyandvalue = row.split("="); if(keyandvalue.length&lt;2) continue; string key = keyandvalue[0]; string value = keyandvalue[1]; if(key.equals("")||value.equals("")) continue; statusmap.put(key, value); } return statusmap; } public void setstatusstr(string status_) { status = status_; } public static void main(string args[]){ //测试用例 str2mapimpl s2m= new str2mapimpl(); string str = "a=1\ b=2\\rc=3"; s2m.setstatusstr(str); map&lt;string,string&gt; status = s2m.getstatus(); system.out.println(status); } }
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
使用什么样便宜又无化学成分的清洁用品去除油
古代诗词是我国传统文化的精髓,阅读这些经典
盗墓笔记原著中霍仙姑为何要到张家古楼?张起
我想买一本关于画建筑水电设计的书,买什么样
有随插随用的无线路由器吗?
为什么现金和银行存款日记账必须采用订本式账
愿老天垂怜是什么意思
中国移动通信关南营业厅地址在什么地方,想过
漫插画专业全国各高校排名
八字时日相冲,是不是一生运气不好,很不如意
上季度多计提了企业所得税
我现在会开车,想拿到驾照,请问必须要去培训
新人家在哪里啊,我有事要去这个地方
什么时候可以起诉债权纠纷
我刚换的氙气灯在切换近光灯远光灯的时候会闪
推荐资讯
纸巾为什么会有二层三层
Push action 什么意思
网王同人文 我记得 女主是柳生妹妹 其中和仁
关于大同变化的英语作文
难忘什么情作文600字
PVC卫浴柜和实木卫浴柜哪个好
有没有人了解R.B管理器这个软件?
宜州至马山高速多少公里
以司马迁为话题写作文
揭阳市泰图工贸有限公司在哪里啊,我有事要去
南宁FM97.0女主播电台经常播放的那首插曲
查一下周立波说过这么一句话吗?电话打一次没
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?