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

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

怎么判断值相同,并取出两个相同值所对应的键?(键值对是不固定的)

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));
}
}
}追问

当集合数据量大的时候就没数据了。

追答

多大?

追问

518KB,就是把集合写成文件的大小

追答

把实际文件的内容(十行左右)复制上来看看(截图也行),我帮你想个对策。
不过要等我下班。

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-05-02
用正则表达式啊,或者使用String类提供的方法。

java程序设计问题,查找两个list属性值相同的元素,并对差异
方法一:使用HashSet HashSet在Java中是一个不包含重复元素的集合。通过合并两个列表并计算差集,可以找出重复元素。以下代码示例展示了使用HashSet方法:此代码由全栈式全自动开发工具-飞算SoFlu软件机器人生成的AI-FuncGPT(慧函数)自动创建,通过输入“找出两个List中的重复元素”这一指令,瞬间生成了上...

java遍历集合某字段,判断是否存在相同的值。
if (!spid.equals(firstspid)) { System.out.println("有一个不相等,返回false");return false;} } return true; \/\/循环完没有找到相等的返回true } return false; \/\/为空返回false } GoosBean是存放在List里的一个javabean public class GoodsBean implements Serializable{ \/ \/ private static...

3种方法,用Java找出两个List中的重复元素
方法一:利用HashSet的特性 Java中的HashSet是一个不允许有重复元素的集合。我们可以利用这个特性,将两个List合并,然后通过计算合并后的集合与两个原始List的差集,来找出重复的元素。以下是一个使用HashSet来找出两个List中重复元素的代码示例。```java Set set = new HashSet>();set.addAll(list...

3种方法,用Java找出两个List中的重复元素
方法一:使用HashSet Java中的HashSet是一个不允许有重复元素的集合。我们可以利用这个特性,通过合并两个List并计算差集,来找出重复的元素。以下是一个通过使用HashSet数据结构来找出两个List中的重复元素的代码示例。方法二:使用Stream API Java 8引入了Stream API,使我们能够更简洁地处理集合。我们可...

Java中如何判断List中一部分数据是否重复?
方法一:将元素用Set.add()方法逐一插入到一个Set中,观察add()方法的返回值,如果返回false说明当前元素重复。元素所属的类需要重写equals()和hashCode()方法。方法二:将所有元素复制到一个新List中并用List.sort()方法排序,然后遍历该List检查相邻每两个元素是否重复。元素所属的类必须实现Comparable...

java里有没有专门判断List里有重复的数据
List是有序的可重复集合, 如果要判断list中是否有一个元素 , 可以用 list.contains(obj)如果只是为了判断list中是否有重复 , 方法有很多种, 比如可以将list转换为set Set set = new HashSet<>(list);set是无需不可重复的集合 , list转成set之后 , 如果set的size比 list的size小 , 说明有重复...

请教:用Java怎么判断插入数据库里面重复的
插入之前,用你想插入的数据作为查询条件,在数据库查询一下,如果有返回数据,那就是数据库已经存在这条数据,反之该数据在数据库不存在 String name = 想插入的数据;User user = service.getName(name);\/\/查询数据库if(null==user) {\/\/该数据数据库不存在}else {\/\/该数据已经存在该数据} ...

java去除两个集合中重复的数据,也就是求差值
stuList3 = new ArrayList<String>();stuList3.addAll(stuList);stuList3.addAll(stuList2);\/\/把两个集合合成一个 stuList.retainAll(stuList2);\/\/找出两个集合中重复的数据 stuList3.removeAll(stuList);\/\/然后移除 for(String s: stuList3){ System.out.println(s);\/\/打印结果 } ...

java 怎么比较两个list是否相同
第一步:判断两个list集合的元素个数是否相等。如果不相等则两个list集合也不相等,判断结束,如果相等则进入第二步判断 第二步:判断list1的元素是否全部在list2中。遍历list1,取出list1中的元素,依次去list2中比较是否list2也存在这个元素。如果有任何一个list1中的元素在list2中不存在,则两个...

Java中List Set Map 是否有序等总结,两个对象equals算重复
一个类是可排序的,它就应该实现Comparable接口。有时多个类具有相同的排序算法,那就不需要在每分别重复定义相同的排序算法,只要实现Comparator接口即可。集合框架中还有两个很实用的公用类:Collections和Arrays。Collections提供了对一个Collection容器进行诸如排序、复制、查找和填充等一些非常有用的方法,...

相似回答