如何从对象列表中删除重复项

Harshita Sethi

我有一个包含以下数据的Excel文件(虚拟)

a   b   c
d   b   c
e   b   c
f   b   c
g   b   c
e   b   c
d   b   c
d   b   c
d   b   c

我正在读取此文件并将结果存储在Set中,以便可以删除重复项,并且我只会得到唯一列表。以下是我尝试过的

FileInputStream file = new FileInputStream(new File("C:\\Users\\harshita.sethi\\Desktop\\ALLOT010T_Input_Keywords.xls"));
HSSFWorkbook w = new HSSFWorkbook(file);
HSSFSheet sheet = w.getSheetAt(0);
int totalrows = sheet.getLastRowNum();

System.out.println(sheet.getRow(0).getPhysicalNumberOfCells());
String[][] data = new String[totalrows+1][sheet.getRow(0).getPhysicalNumberOfCells()];
Set<String[]> keySet = new HashSet<>();
for (int i = 0; i <= totalrows; i++) {
    for (int j = 0; j < sheet.getRow(0).getPhysicalNumberOfCells(); j++) {
        HSSFCell cell = sheet.getRow(i).getCell(j);
        // writing keywords from excel into a hashmap

        data[i][j]=cell.getRichStringCellValue().getString();
    }
    keySet.add(data[i]);

}
Iterator<String[]> iterator = keySet.iterator();
System.out.println("Output Set is as below");
while(iterator.hasNext()){
    String[] next = iterator.next();
    System.out.println(next[0] + "\t"+ next[1] +"\t "+next[2]);
}

该代码的输出如下所示

Output Set is as below
d   b    c
e   b    c
a   b    c
d   b    c
d   b    c
g   b    c
e   b    c
f   b    c
d   b    c

该集未删除重复项。我可以使用什么其他方法来消除这些重复项。任何列都可以具有不同或相同的值。因此,我无法删除基于特定列的重复项。

我希望整行都是唯一的。

PS:这个数据只是傻瓜。在实际情况下,我有更多列,并且任何列值都可以不同,这将使行唯一。

他们是

Set<String[]>不能使用HashSet实现,因为数组不会覆盖类的默认值hashCode()equals()实现Object

您的替代方法是使用Set<List<String>>(即轻松地将它们转换String[])或使用自定义List<String>Arrays.asList()TreeSet<String[]>Comparator<String[]>

例如 :

Set<List<String>> keySet = new HashSet<>();
for (int i = 0; i <= totalrows; i++) {
    for (int j = 0; j < sheet.getRow(0).getPhysicalNumberOfCells(); j++) {
        HSSFCell cell = sheet.getRow(i).getCell(j);
        // writing keywords from excel into a hashmap

        data[i][j]=cell.getRichStringCellValue().getString();
    }
    keySet.add(Arrays.asList(data[i]));
}
Iterator<List<String>> iterator = keySet.iterator();
System.out.println("Output Set is as below");
while(iterator.hasNext()){
    List<String> next = iterator.next();
    System.out.println(next.get(0) + "\t"+ next.get(1) +"\t "+next.get(2));
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从SML中的列表中删除重复项

来自分类Dev

按对象属性从列表中删除重复项的最佳方法

来自分类Dev

如何从元组列表中删除重复项,但保持原始顺序

来自分类Dev

使用Distinct删除列表中的重复项

来自分类Dev

从Scheme中的列表中删除重复项

来自分类Dev

如何通过对象的属性从自定义对象列表中删除重复项

来自分类Dev

Python从列表中删除几个重复项

来自分类Dev

从类别列表中删除重复项

来自分类Dev

如何在Python中删除大量对象的重复项

来自分类Dev

如何从列表中删除连续的重复项?

来自分类Dev

如何从对象列表中删除(通过linq)重复项

来自分类Dev

如何在JavaScript对象列表中按键值删除重复项?

来自分类Dev

如何从未排序的链接列表中删除重复项

来自分类Dev

如何删除列表中的重复项(Raku)

来自分类Dev

从列表中删除重复项,并将列表作为对象

来自分类Dev

如何从序言列表中删除所有重复项

来自分类Dev

删除列表列表中的重复项

来自分类Dev

如何从Python的对象列表中删除具有相同“标题”字段的重复项?

来自分类Dev

如何从字符串列表中删除重复项?

来自分类Dev

从列表中的元组中删除重复项

来自分类Dev

删除列表中的重复项

来自分类Dev

如何从对象列表中删除重复项

来自分类Dev

如何基于两个自定义对象删除列表中的重复项

来自分类Dev

如何从sql列表中删除重复项?

来自分类Dev

如何删除和计算对象数组中的重复项?- Javascript

来自分类Dev

对象如何删除重复项?

来自分类Dev

如何使用javascript从对象中删除重复项

来自分类Dev

如何从列表中删除重复的字典对象

来自分类Dev

如何根据列表项中先前的发射删除重复项

Related 相关文章

热门标签

归档