如何从ArrayList返回一个对象? (JAVA)

时间:2017-11-17 14:14:02

标签: java

我想返回列表中与主机具有相同主机。但它给了我和错误:"此方法必须返回一种类型的主机"

我如何返回对象主机

public class Manager {

private List<Host> hosts = new ArrayList<Host>();

public Host getHost (String domain) {

      for(int i = 0; i < hosts.size(); i++) {
          if(domain == hosts.get(i).getDomain()) {
              return hosts.get(i);
          }}      
  }

感谢。

4 个答案:

答案 0 :(得分:2)

首先,要比较String,您需要使用String.equals

if(domain.equals(hosts.get(i).getDomain()))

其次,如果找不到,则不返回任何内容,您需要返回null或抛出异常

 for(int i = 0; i < hosts.size(); i++) {
     ...
 }
 return null;

 for(int i = 0; i < hosts.size(); i++) {
     ...
 }
 throw new ItemNotFoundException(); //Or any exception you want

答案 1 :(得分:2)

streamOptional

怎么样?
return hosts.stream().filter(host -> host.getDomain().equals(domain)).findAny();

结果类型为Optinal<Host>

答案 2 :(得分:1)

你只需要在循环后返回null。

  public Host getHost (String domain) {
        for(int i = 0; i < hosts.size(); i++) {
            if(domain.equals(hosts.get(i).getDomain())) {
              return hosts.get(i);
            }
        }      
        return null;
    }

如果找不到任何内容,您也可以抛出异常。

答案 3 :(得分:0)

可能是因为你方法的最后一行不是退货吗?也许试试这个:

public Host getHost (String domain) {
      Host host = null;
      for(int i = 0; i < hosts.size(); i++) {
          if(domain.equals(hosts.get(i).getDomain())) {
              //saves in the variable declared outside of for
              host = hosts.get(i);
          }
      }
      //attention: if nothing is found in your arraylist, the returned object is refers to null
      return host;
  }