gpt4 book ai didi

java - 设置交集

转载 作者:行者123 更新时间:2023-12-01 13:55:50 25 4
gpt4 key购买 nike

我想将交集(使用此方法 http://google-collections.googlecode.com/svn/trunk/javadoc/com/google/common/collect/Sets.html )应用于包含非原始对象的集合。我写了这段代码,但我发现交集是空的..

        Concept a = new Concept("Dog");
Concept b = new Concept("Tree");
Concept c= new Concept("Dog");
HashSet<Concept> set_1 = new HashSet<Concept>();
HashSet<Concept> set_2 = new HashSet<Concept>();

set_1.add(a);
set_1.add(b);
set_1.add(c);
SetView<Concept> inter = Sets.intersection(set_1,set_2);
System.out.println(inter.size()); ----> I HAVE ZERO !!!

Concept类只包含一个String类型的私有(private)成员以及get和set方法..我没有equals()hashCode ().

最佳答案

这按预期工作(注意 Concept 上的 equalshashCode)

package com.stackoverflow.so19634761;

import com.google.common.collect.Sets;
import com.google.common.collect.Sets.SetView;

import java.util.Set;

public class ISect {
public static void main(final String[] args) {
final Concept a = new Concept("Dog");
final Concept b = new Concept("Tree");
final Concept c= new Concept("Dog");
final Set<Concept> set1 = Sets.newHashSet(a);
final Set<Concept> set2 = Sets.newHashSet(b, c);

final SetView<Concept> inter = Sets.intersection(set1, set2);
System.out.println(inter); // => [Concept [data=Dog]]
}

private static class Concept {

private final String data;

// below this point code was generated by eclipse.

public String getData() {
return data;
}

@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((data == null) ? 0 : data.hashCode());
return result;
}

@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Concept other = (Concept) obj;
if (data == null) {
if (other.data != null)
return false;
} else if (!data.equals(other.data))
return false;
return true;
}

public Concept(String data) {
this.data = data;
}

@Override
public String toString() {
return "Concept [data=" + data + "]";
}
}
}

关于java - 设置交集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19634761/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com