我无法从List中检索数组值

时间:2013-04-28 21:06:29

标签: java arraylist iterator

我想从List中检索值。但我无法从列表中获取值。我将通过将值传递给方法并将其添加到arraylist中来从另一个类调用此方法。现在,当我尝试检索值时,不会返回任何内容。

public class No 
{
    private double km;
    private String stringvalue;

    List<String> k1=new ArrayList();
    List<String> k2=new ArrayList();

    public void clusterform(int i,String km1,String km2)
    {
        int val1=km1.length();
        int val2=km2.length();
        int centroid=i;

        if(val1>centroid)
        {
            if(val1>val2)
            {
                k1.add(km1);
                k2.add(km2);

                System.out.println("hi");
            }
            else
            {
                k2.add(km1);
            }
        }
        else
        {
            k2.add(km1);
            k1.add(km2);
        }

        No n=new No ();

        n.call();
    }

    public void call()
    {
        Iterator getv = k1.iterator();
        while(getv.hasNext())
        {
            System.out.println(getv.next());
        }
    }
}

2 个答案:

答案 0 :(得分:2)

原因是这条线:

No n=new No ();
n.String();

这是创建No的新对象,其ArrayList k1已初始化,其大小为0。所以n.String()方法什么都不打印。您应该直接调用String()方法而不用以下方式创建对象:

String()

作为旁注,我建议你坚持使用java命名约定。例如,方法名称应以小写字母开头。类名应以大写字母开头。还有很多。请查看此official tutorial以详细了解Java命名约定。

答案 1 :(得分:0)

k1k2是类No的实例变量,因此当您调用No n=new No ();时,n将成为具有新(空)列表的类的新实例。您可能希望调用类No的当前实例的方法String,而不是创建新实例。