0
ArrayList<Fix> fixList = new ArrayList<Fix>();
StringTokenizer st = new StringTokenizer(idlist, ",");
int index = 0;
while(st.hasMoreElements()) {
    Long id = Long.parseLong(st.nextElement().toString());          
    fixList.add(index++,fixManager.getFixById(id));
}

这里的 Arraylist 只能取一个元素。我调试了它,它只需要一个元素,但计数显示 arraylist 中有两个或多个元素。

4

5 回答 5

0

为什么不只添加元素而不定义索引?

fixList.add(fixManager.getFixById(id));

查看http://javafiddle.net/jqPDma

于 2012-10-02T06:19:46.233 回答
0

用于HashMap您想要的任何类型的映射..

Map<Integer, Fix> fixList = new HashMap<Integer, Fix>();
StringTokenizer st = new StringTokenizer(idlist, ",");
int index = 0;
while(st.hasMoreElements()) {
    Long id = Long.parseLong(st.nextElement().toString());          
    fixList.put(index++,fixManager.getFixById(id));
}

或者,如果您在对象id内部Fix..您可以简单地将2nd元素添加到列表中..您不需要index访问它们..

fixList.add(fixManager.getFixById(id));
于 2012-10-02T06:19:56.840 回答
0

您确定 fixManager 为每个调用返回对象吗?如果您尝试添加 null,ArrayList 不会抱怨。

于 2012-10-02T06:28:59.380 回答
0

你的语法是正确的,但你的方法

fixManager.getFixById(id)

内部循环仅返回一个基于该 ID 的元素。

你可以看到,它通过调试getFixById(id)你的 fixManager 内部。

于 2012-10-02T06:32:37.370 回答
0

我尝试了以下代码

ArrayList <Integer> x = new ArrayList<Integer>();

    for(int i=0;i<15;i++)
    {
        x.add(i);
        x.add(i);

    }

    for(int i=0;i < x.size();i++)
    {
        System.out.println(x.get(i));
    }

它工作正常。所以我认为 sou 应该检查你的 getFixbyID() 函数。我怀疑它是否在每次调用中都返回了新的 Fix 类型对象。

于 2012-10-02T06:36:31.463 回答