删除java String[]数组中重复值

如:有动态数组String[]strs={"甲供=0","自购=0","甲控=0","调入=0","采购站=0","材料厂=0","材料厂=200","调入=199","... 如:有动态数组String[] strs={"甲 供=0","自 购=0","甲 控=0","调 入=0","采购站=0","材料厂=0","材料厂=200"," 调 入=199"," 甲 控=150"}
去除数组当中“=”前面汉字相同的元素,
我想要得到的结果是:
String[] st={"甲 供=0","自 购=0","采购站=0","材料厂=200"," 调 入=199"," 甲 控=150"}
请问大侠,这个问题怎么解决呢?
展开
 我来答
ge浩然正气
2012-07-24 · TA获得超过455个赞
知道小有建树答主
回答量:573
采纳率:0%
帮助的人:188万
展开全部
String result = "";

Set<String> set = new HashSet<String>(); set集合是不重复的集合。

for( String s : strs)
{
String s2 = (s.split("="))[0].trim(); //取“=”号前面的部分
if(set.add(s2)) //如果能添加进去,说明没有重复

{
result += s+",";

}

}
result = result.substring(0,result.length-1); 去掉最后一个“,”号
String[] st = result.split(",");

最后的st就是你要的结果 。
不好意思,把代码写出来了, 刚set写错位置了,该一下 。

还忽略了一个问题,您=号后面是有值的,几个前面相同的,后面数值不相同,您的数值是要怎么处理打算, 你补充下,我再给你该程序
更多追问追答
追问
把0用数字覆盖掉
如; 数组中有以下2个元素,
调 入=0
调 入=199,则就用: 调 入=199覆盖:
调 入=0
这个元素。
追答
是0和199相加呢,还是说,删除0呢?
如果是: 调入=2,调入=3,调入=4,这样的话,你留哪个?
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
529656407
2012-07-24 · TA获得超过161个赞
知道答主
回答量:97
采纳率:0%
帮助的人:48.2万
展开全部
可以将数组中的元素依次提取出来并使用split这个方法按“=”拆分,然后进行比较再去掉你想要的删除的那个
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
泛衣唾该推甘3s
2012-07-24 · 超过28用户采纳过TA的回答
知道小有建树答主
回答量:109
采纳率:0%
帮助的人:74.2万
展开全部
遍历数组strs[]

Map map = new HashMap();
str=strs[i]
str[] values = str.split("=");
map.put(values[0],values[1]);

然后再把map逆向转换为 strs数组就行了。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
2010zcy2010
2012-11-08
知道答主
回答量:7
采纳率:0%
帮助的人:1万
展开全部
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-07-24
展开全部
Distinct()
追问
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式