下面的编码是工作样本,但我仍然不满意这个与performancewise相关的代码。请看一下,如果有更好的方法,请告诉我。谢谢提前。
将项添加到arraylist对象
String resultItems[] = paging.getMoveLeftArray().split(",");
String fields[]={"id","name","name1"};
leftObj=new ArrayList();
for(int i=0;i<resultItems.length;i++){
//below line mea
TestVO bean=new TestVO();
String resultItem = resultItems[i];
String idANDname[] = resultItem.split("@");
String id = idANDname[0];
// name or id should not contain "-"
String name[] = idANDname[1].split("-");
//values and fileds are always having same length
for(int j=0;j<name.length;j++) {
PropertyUtils.setProperty(bean, fields[j], name[j]);
}
leftObj.add(bean);
}
从arraylist对象中删除项目:availableList包含所有TestVO对象:
String []removeArray=paging.getMoveRightArray().split(",");
tempList=new CopyOnWriteArrayList();
newTempList=new CopyOnWriteArrayList();
for(int i=0;i<availableList.size();i++){
boolean flag = false;
TestVO tempObj = (TestVO )availableList.get(i);
int id =(Integer)tempObj.getId();
// System.out.println("id value"+id);
// availableList.get(i).getClass().getField(name);
for(int j=0;j<removeArray.length;j++){
String resultItem = removeArray[j];
String idandname[] = resultItem.split("@");
for(int k=0;k<idandname.length;k++){
String ids[]=idandname[0].split("-");
if(id==Integer.parseInt(ids[0])){
flag = true;
break;
}
}
}
if(flag){
tempList.add(tempObj);
}
else{
newTempList.add(tempObj);
}
答案 0 :(得分:0)
你可以尝试
List<TestVO> leftObj=new ArrayList<TestVO>();
for(String resultItem : paging.getMoveLeftArray().split(",")) {
String[] names = resultItem.split("@")[0].split("-");
leftObj.add(new TestOV(names[0], names[1], names[2]));
}
向TestOV添加一个构造函数,用于设置三个字段。
假设第一个' - '在第一个'@'之前,getId()应该是一个int值,所以你不需要强制转换它。只有当你打算同时从不同的线程读写时才需要CopyOnWriteArrayList。
Set<Integer> removeIds = new HashSet();
for(String resultItem: paging.getMoveRightArray().split(","))
removeIds.add(Integer.parseInt(resultItem.split("-")[0]));
List<TestOV> tempList=new ArrayList(), newTempList=new ArrayList();
for(TestVO tempVO: availableList)
(removeIds.contains(tempVO.getId()) ? tempList : newTempList).add(tempVO);