ArrayList只插入单个元素

时间:2012-10-02 06:16:18

标签: java collections

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只能使用一个元素。我调试它,它只需要单个元素,但count显示arraylist中有两个或更多元素。

5 个答案:

答案 0 :(得分:0)

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

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

结帐http://javafiddle.net/jqPDma

答案 1 :(得分: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));

答案 2 :(得分:0)

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

答案 3 :(得分:0)

您的语法正确,但您的方法

fixManager.getFixById(id)

内部循环只返回一个基于该Id的元素。

你可以通过调试fixManager中的getFixById(id)来看到它。

答案 4 :(得分: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));
    }

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