我正在尝试编写一个接受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();
答案 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)