根据多个键在集合中插入元素
insert elements in the collection based on multiple keys
我有一个包含许多字段的查询结果,我必须使用 java 代码根据 table 的 3 列在集合中仅插入唯一行。
假设查询结果如下:
A 栏 |上校 B |上校 C |上校| E 栏
1 | 2 | 1 | V1 |一个
1 | 2 | 1 | V2 |一个
2 | 1 | 1 | V3 | B
3 | 2 | 2 | V4 | C
2 | 1 | 1 | V5 | B
根据 col A + Col B + Col C 的组合,第 1 行和第 2 行重复
第 3 行和第 5 行也是重复的。
所以我必须在基于 col A、col B 和 col C 的集合中仅插入唯一值
结果:第 1、3、4 行应该对其余的集合感兴趣。
请建议我解决方案。
您可以创建一个每行有 5 个字段的 POJO,并使用一个不允许重复的 Set。让 POJO 实现等号和哈希码,您可以在其中定义等号的含义。
示例:
public class Row {
private Integer col1;
private Integer col2;
private Integer col3;
private Integer Col4;
private Integer Col5;
public Row(Integer col1, Integer col2, Integer col3) {
this.col1 = col1;
this.col2 = col2;
this.col3 = col3;
}
//gets sets
public Integer getCol1() {
return col1;
}
public Integer getCol2() {
return col2;
}
public Integer getCol3() {
return col3;
}
@Override
public boolean equals(Object o) {
if (o == null || !(o instanceof Row))
return false;
if (this == o)
return true;
Row other = (Row)o;
if (col1.equals(other.getCol1()) && col2.equals(other.getCol2()) && col3.equals(other.getCol3())) {
return true;
}
return false;
}
@Override
public int hashCode() {
return col1+col2+col3;
}
}
测试:
public static void main(String args[]){
Main m = new Main();
Row r1 = m.new Row(1,1,2);
Row r2 = m.new Row(2,3,4);
Row r3 = m.new Row(1,1,2);
Row r4 = m.new Row(2,3,2);
Set<Row> set = new HashSet<>();
set.add(r1);
set.add(r2);
set.add(r3);
set.add(r4);
for (Row row : set) {
System.out.println(row.getCol1() + ":" + row.getCol2() + ":" + row.getCol3());
}
}
我有一个包含许多字段的查询结果,我必须使用 java 代码根据 table 的 3 列在集合中仅插入唯一行。
假设查询结果如下:
A 栏 |上校 B |上校 C |上校| E 栏
1 | 2 | 1 | V1 |一个
1 | 2 | 1 | V2 |一个
2 | 1 | 1 | V3 | B
3 | 2 | 2 | V4 | C
2 | 1 | 1 | V5 | B
根据 col A + Col B + Col C 的组合,第 1 行和第 2 行重复 第 3 行和第 5 行也是重复的。
所以我必须在基于 col A、col B 和 col C 的集合中仅插入唯一值
结果:第 1、3、4 行应该对其余的集合感兴趣。 请建议我解决方案。
您可以创建一个每行有 5 个字段的 POJO,并使用一个不允许重复的 Set。让 POJO 实现等号和哈希码,您可以在其中定义等号的含义。
示例:
public class Row {
private Integer col1;
private Integer col2;
private Integer col3;
private Integer Col4;
private Integer Col5;
public Row(Integer col1, Integer col2, Integer col3) {
this.col1 = col1;
this.col2 = col2;
this.col3 = col3;
}
//gets sets
public Integer getCol1() {
return col1;
}
public Integer getCol2() {
return col2;
}
public Integer getCol3() {
return col3;
}
@Override
public boolean equals(Object o) {
if (o == null || !(o instanceof Row))
return false;
if (this == o)
return true;
Row other = (Row)o;
if (col1.equals(other.getCol1()) && col2.equals(other.getCol2()) && col3.equals(other.getCol3())) {
return true;
}
return false;
}
@Override
public int hashCode() {
return col1+col2+col3;
}
}
测试:
public static void main(String args[]){
Main m = new Main();
Row r1 = m.new Row(1,1,2);
Row r2 = m.new Row(2,3,4);
Row r3 = m.new Row(1,1,2);
Row r4 = m.new Row(2,3,2);
Set<Row> set = new HashSet<>();
set.add(r1);
set.add(r2);
set.add(r3);
set.add(r4);
for (Row row : set) {
System.out.println(row.getCol1() + ":" + row.getCol2() + ":" + row.getCol3());
}
}