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中有两个或更多元素。
答案 0 :(得分:0)
答案 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类型对象。