循环通过集

时间:2016-05-01 18:47:24

标签: java loops set

我创建了两个类。第一个(称为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();


    }

7 个答案:

答案 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;
    }