使用Java判断集合中是否有重复值,若有重复,则输出这两个相同值对应的键

查找集合中所有相同的值,并输出所对应的键。(什么集合都可以)例如:map集合中有如下几个元素键:a1值:qwe键:a2值:rty键:a3值:qwe键:a4值:uio键:a... 查找集合中所有相同的值,并输出所对应的键。(什么集合都可以)
例如:map集合中有如下几个元素
键:a1 值:qwe
键:a2 值:rty
键:a3 值:qwe
键:a4 值:uio
键:a5 值:pas
键:a6 值:pas

怎么判断值相同,并取出两个相同值所对应的键?(键值对是不固定的)
展开
 我来答
小女辍学卖豆芽
2012-05-03 · TA获得超过197个赞
知道答主
回答量:125
采纳率:0%
帮助的人:159万
展开全部
import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class SomeProgram {
public static void main(String[] args) {
Map<String, String> map = new TreeMap<String, String>();
map.put("a1", "qwe");
map.put("a2", "rty");
map.put("a3", "qwe");
map.put("a4", "uio");
map.put("a5", "pas");
map.put("a6", "pas");

ByteArrayOutputStream baos = new ByteArrayOutputStream();
PrintStream ps = new PrintStream(baos);
PrintStream old = System.out;
System.setOut(ps);
Set<String> set1 = new HashSet<String>();
Set<String> set2 = new HashSet<String>();
for (Map.Entry<String, String> entry : map.entrySet()) {
if (!set1.add(entry.getValue())) {
set2.add(entry.getValue());
}
System.out.print("key=" + entry.getKey() + ", value="
+ entry.getValue() + "\r\n");
}
ps.flush();
System.setOut(old);
String source = new String(baos.toByteArray());
String[] strs = set2.toArray(new String[set2.size()]);
for (String s : strs)
fetchSameKeyValuePair(source, s);
}

private static void fetchSameKeyValuePair(String source, String key) {
Pattern p = Pattern.compile("(key=[a-zA-Z0-9]*, value=" + key + ")");
Matcher m = p.matcher(source);
while (m.find()) {
System.out.println(m.group(1));
}
}
}
更多追问追答
追问
当集合数据量大的时候就没数据了。
追答
多大?
gaoleiaiyj
2012-05-02 · TA获得超过155个赞
知道小有建树答主
回答量:227
采纳率:0%
帮助的人:143万
展开全部
用正则表达式啊,或者使用String类提供的方法。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式