Java getName(String name)

时间:2016-04-27 01:54:56

标签: java list get linked-list

我对Java编程非常陌生,只有几个星期,我有这个遍历链表的问题,找到一个匹配名称的狗。我已经尝试了我需要的东西,但我正在努力理解遍历。

注意:我的顶部还有一个public dog head;变量。

基本上它需要做的是:

Traverse LinkedList查找匹配名称的狗,如果狗没有找到返回null。

    public Dog getName(String name) {

    Dog name = head;
    int index;

    while(index > 0) {
        index--;
        name = name.next;
    }

    if (name == null)
    {
       return null
    }
        return name;
}

4 个答案:

答案 0 :(得分:0)

public Dog getName(String name) {

    String dogName = name;
    String listCurrentValue = listOfDogNames //Add your list of dog names here

    While(listOfDogNames.next()){
    If (dogName.equals(listCurrentValue)){ 
        //FOUND MATCH
     }
    Else
       //NO MATCH
     }
    return name;
}

答案 1 :(得分:0)

就像localplutonium所说,字符串不应与==进行比较,而应与.equals()进行比较。另外,我看到你在while循环中使用了索引,但是你永远不会将索引分配给起始值。有一个名为index的int变量,但它没有值,所以不可能减去它。

答案 2 :(得分:0)

我在这段代码中发现了几个美容问题: public Dog getName(String name){      //如果未使用字符串名称参数,那么为什么将其作为参数传递? ????     狗名=头;     int index;

while(index > 0) {
    index--;
    name = name.next;  //name.next should be name.getNext(); 

}
//  this check is redundant and not need it:
// if null return null else return name??? 
// so you are in fact returning name value no matter what...

if (name == null)
{
   return null
}
    return name;

}

答案 3 :(得分:0)

这是作业(显然),所以我不能用勺子提供你可以提交的答案,但我可以尝试创建一个有用的,也许教你一些新东西 - 例如使用集合流。< / p>

您可以使用流遍历集合,而不知道或关心集合如何遍历,使用过滤器选择感兴趣的项目然后返回它,如果没有找到类似于以下表达式的表达式,则返回null; / p>

public static Dog getDog(String name) {
    // given a collection called dogs
    return dogs.stream()    // get the collection's stream
            .filter(d -> d.getName().equals(name))   // filter on the name text
            .findFirst()    // find the first match and return it
            .orElse(null);    // or else return null
}

例如:

import java.util.LinkedList;
import java.util.List;

public class TestDog {
    private static List<Dog> dogs = new LinkedList<>();

    public static void main(String[] args) {

        String[] names = { "Fido", "Bingo", "Yeller", "Pluto", "Lassie", "Cujo", "Fang", "Rowf",
                "Scamper", "Lady", "Sparky", "Toto", "Bandid", "Beauregard", "Bowser", "Cerberus",
                "Daisy", "Duke", "Fred", "Hellhound", "Rex", "Scamp", "Snoopy" };

        for (String name : names) {
            dogs.add(new Dog(name));
        }

        System.out.println(getDog("Toto"));       
        System.out.println(getDog("Meow"));
    }

    public static Dog getDog(String name) {
        return dogs.stream()
                .filter(d -> d.getName().equals(name))
                .findFirst()
                .orElse(null);
    }
}

public class Dog {
    private String name;

    public Dog(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

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

}