为什么链接列表 class 在 macOS x 上的 myeclipse 2013 pro 中没有正确显示添加方法

Why the Linked List class is not showing add method correctly in myeclipse 2013 pro on macos x

我正在使用链表 class 添加 elements.To 一个一个地获取元素 我使用 Iterator 只获取偶数。

问题

1 l.add(p) 在我尝试从 1 到 10 取数字时代码中显示错误

当我输入 l.add("p"); //没有错误为什么?

2 在尝试获取整数对象时我无法应用模数运算符,但为什么呢?

这是代码 打包应用程序; 导入 java.util.*; public class IteratorDeo1 { public static void main(String s[]){

    LinkedList l=new LinkedList();
        for(int p=0;p<=10;p++)
            {
              l.add("p"); 
            //l.add(p); here 1st  error comes why
            }
    System.out.println(l);
    Iterator i=l.iterator();
    while(i.hasNext())
    {
        Integer I=(Integer)i.next();
        if( I % 2 == 0 )  here comes 2nd error
          System.out.println(I);
        else
            i.remove();
    }
    System.out.println(l);
}

您存储了 "p" 11 次,这是文字 String,而不是 Integer。添加 "p" 后,您将添加 "2",这是另一个文字 String,而不是 Integer.

为确保您添加的是 Integer 或特定类型的对象,您应该使用泛型:

LinkedList<Integer> l=new LinkedList<Integer>();
for(int p=0;p<=10;p++)
    l.add("p"); // compiler error here: you're adding a String, not an Integer

如果您使用的是 Java 1.4 或更早版本(这在现在很奇怪),那么您不能使用泛型,但您仍然可以 保护 自己从这个 ClassCastException 使用 instanceof 运算符:

Iterator i=l.iterator();
while(i.hasNext()) {
    Object current = i.next();
    if (current instanceof Integer) {
        Integer I = current;
        //rest of your code...
    }
}

此外,自版本 5 起,Java 中包含拆箱和自动装箱功能。在 Java 1.4 或更早版本中,您必须获取包装器的 int 值并执行模数运算符手动:

if (I.intValue() % 2 == 0) {
    //rest of code...
}