Java 查找唯一和重复的值
在单元格1中,我有一个值列表,即[4000400140024003],在单元格2中,我有一个值列表,即[12344000]。我试图找到重复和唯一的价值,但即使它有重复的价值,它每次去其他部分。为什么任何代码都错了Java 查找唯一和重复的值,java,arrays,apache,apache-poi,Java,Arrays,Apache,Apache Poi,在单元格1中,我有一个值列表,即[4000400140024003],在单元格2中,我有一个值列表,即[12344000]。我试图找到重复和唯一的价值,但即使它有重复的价值,它每次去其他部分。为什么任何代码都错了 Iterator itr = cells2.iterator(); while(itr.hasNext()){ HSSFCell s = (HSSFCell) itr.next(); boolean sta = cells1.contains(s.get
Iterator itr = cells2.iterator();
while(itr.hasNext()){
HSSFCell s = (HSSFCell) itr.next();
boolean sta = cells1.contains(s.getStringCellValue());
if(sta==true){
System.out.println("Dublicate:>>>>"+s.toString());
}else{
System.out.println("unique value:>>>>:"+s.toString());
}
}
}
输出值为:
唯一值:>>>>:1234
唯一值:>>>>:4000从您的注释中
cells1
是ArrayList
,因此您正在调用cells1.contains(s.getStringCellValue())
意味着在单元格的数组列表中查找字符串
,这不会做任何事情,这就是它进入else部分的原因
最终,您试图在单元格中查找字符串
,这是不可能直接找到的
必须将ArrayList
的每个单元格的String
值(表示单元格的String
值)与s进行比较。getStringCellValue()
必须重写contains
方法或声明自己的方法
public boolean isThereAnyCellWithString(String str){
//Iterate over cells1 and compare
//Use contains here if you want to or equals to find exact match
for(HSSFCell cell : cells1){
if(cell.getStringCellValue().contains(str))
return true;
}
return false;
}
仅供参考,如果(sta)
,您可以执行操作。getStringCellValue()
返回什么。为什么不在这里执行toString()
?@Stanley List cells1=new ArrayList()@AniketThakur我甚至使用ToString(),但没有相同的输出更改。List cells2=new ArrayList()
考虑到这一点,除非在单元格
类中有overiden.equals()
,否则代码将无法工作。也无需使用getStringCellValue()
或toString()
。