我创建了两个类。第一个(称为Class1)有一个私有属性:price。第二个(称为Class2)需要有一组Class1对象:
我的代码:
private HashSet set = new HashSet<Class1>();
目标是在Class2中创建一个方法,该方法将int作为参数并通过对象进行检查,直到找到一个,其价格等于给定的参数号。它需要返回对象。例如,我想找到一个价格为500的对象,所以我调用函数check(500)并且它确切地返回该对象,其价格为500.我该怎么办?
我的代码:
public Class1 check(int p)
{
Class1 c = new Class1(p);
Iterator it = set.iterator();
while(it.hasNext())
{
// HERE IS THE HELP NEEDED. Using an array it
// would be sth like if(element[i].price == p)
// but I need to use set
if()
{}
it.next();
}
答案 0 :(得分:1)
你可以这样做 - 但是你需要访问price
才能比较它。如果价格本身是私有的,应该有一个吸气剂,我在我的解决方案中假设。
public Class1 check(int p) {
for (Class1 c : set) {
if (c.getPrice() == p) return c;
}
return null; // none found
}
答案 1 :(得分:0)
在班级Class1
中,定义一个getter方法
int getPrice() { return price; }
在班级Class2
Class1 curObj = it.next();
if (curObj.getPrice() == p) {
your logic
}
答案 2 :(得分:0)
在class1中添加price属性的getter,然后check方法如下:
public Class1 check(int p)
{
for (Class1 c1 : set)
{
if (c1.getPrice() == p)
return c1;
}
return null
}
答案 3 :(得分:0)
这样的事情应该有效:
public Class1 check(int p) {
Iterator<Class1> it = set.iterator();
while (it.hasNext()) {
Class1 next = it.next();
if (next.getPrice() == p) {
return next;
}
}
return null;
}
我认为您的班级Class1有getPrice
方法可以返回价格,如果无法访问该字段,则无法将我们需要找到的价格与对象的价格进行比较。
答案 4 :(得分:0)
您的通用类型声明不正确,因此您有raw type;你应该更喜欢id = str(input())
binary_ints = [bin(int(num)) for num in id]
界面。像
Set
您可以使用增强型for-each
loop来迭代private Set<Class1> set = new HashSet<>();
个项目,找到匹配的set
price
答案 5 :(得分:0)
每当有私有变量时,通过getter函数公开它们。 每当你用Spring,Hibernate等框架编写代码时,setter和getter总能帮到你。
public class class2 {
private HashSet set = new HashSet<Class1>();
public Class1 check(int price) {
Iterator<Class1> iterator = set.iterator();
while(iterator.hasNext()) {
Class1 next = iterator.next();
if(next.getPrice() == price)
return next;
}
return null;
}
}
class Class1 {
private int price;
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
}
答案 6 :(得分:0)
你可以迭代集合并在每次迭代中将对象与price参数进行比较,如果找到则返回对象,如果不返回null
public Class1 check(int p)
{
for(Class c : set){
if(c.getPrice ()==p){
return c;
}
}
return null;
}