如何比较节点列表中的对象?

时间:2014-09-09 03:17:55

标签: java nodes

我正在尝试编写一个接受Object的方法,并将其与Node列表进行比较。然后它将该列表中小于它的每个元素添加到新列表中。我非常接近但是第一个元素中的两个并没有复制过来。

public LList<String> getAllLessThan(Comparable<T> anObject) {
    LList<String> newList = new LList();
    Node currentNode = firstNode;
    for (int i = 0; i < length; i++)
    {
        if (currentNode.data.compareTo((T) anObject) == -1)
        {
            newList.add((String) currentNode.data);
        }
        currentNode = currentNode.next;
    }
    return newList;
}

列表的前两个元素应该包括在内但是被忽略了。

    String[] names = {"Abby", "Bobby", "Carla", "Doug"};
    LList<String> nameList = new LList(names, 4);

    String[] newNames = {"Edgar", "Frank"};
    nameList.addAll(newNames);
    System.out.println("Output should be Abby, Bobby, Carla, Doug, Edgar, Frank");
    nameList.display();
    System.out.println();

    nameList.add("Carrie");
    LList<String> newList = nameList.getAllLessThan("Doug");
    System.out.println("Output should be Abby, Bobby, Carla, Carrie");
    newList.display();
    System.out.println();

1 个答案:

答案 0 :(得分:1)

String.compareTo()

  

如果两个字符串不同,则它们在某个索引处具有不同的字符,这些字符串是两个字符串的有效索引,或者它们的长度不同,或两者都有。如果它们在一个或多个索引位置具有不同的字符,则令k为最小的索引;然后,通过使用&lt;来确定位置k处的字符具有较小值的字符串。运算符,按字典顺序排在另一个字符串之前。在这种情况下,compareTo返回两个字符串中位置k处两个字符值的差值 - 即值:

this.charAt(k)-anotherString.charAt(k)
  

如果没有它们不同的索引位置,那么较短的字符串按字典顺序排在较长的字符串之前。在这种情况下,compareTo返回字符串长度的差异 - 即值:

this.length()-anotherString.length()

String1.compareTo(String2)方法返回:

0 when strings are equal
> 0 when String1 > String2
< 0 when String1 < String2

更改

if (currentNode.data.compareTo((T) anObject) == -1)

if (currentNode.data.compareTo((T) anObject) < 0)