关于LinkedList的删除问题
我最近写了一个测试程序,是这样的:
①新建一个测试List,往里面添加很多的元素。
②再根据元素类别删掉不想要的元素。
③打印出list
这里面出现了一个问题:元素无法被删除完整!
请各位指教!
MODEL:
这是我的测试代码:
预期输出中本不应该出现 true的,但是它确确实实出现了,我不是太会synchronized的用法,所以大神见怪请轻拍。
预期输出:
...
..
.4--- happy--- false
1--- 无良商家--- false
5--- 正规工具--- false
2--- 公关系统--- false
0--- 道路--- false
7--- happy--- false
1--- 道路--- false
8--- 一心一意--- false
3--- 道路--- false
8--- happy--- false
6--- PIC--- false
3--- 无良商家--- false
7--- 测试代码--- false
3--- PIC--- false
0--- 一心一意--- false
0--- happy--- false
实际输出:
...
..
.
0--- 标准C1--- true
.
..
...
请指教!
①新建一个测试List,往里面添加很多的元素。
②再根据元素类别删掉不想要的元素。
③打印出list
这里面出现了一个问题:元素无法被删除完整!
请各位指教!
MODEL:
public class AreaTerminalFinalModel {
private Integer mark;
private String levelMark;
private Double label;
private boolean check;
//构造器
public AreaTerminalFinalModel(Integer mark, String levelMark, Float label) {
//name 为 区域/品牌 名 ,
this.mark = mark;
this.levelMark = levelMark;
String a = String.valueOf(label);
BigDecimal bd = new BigDecimal(a);
this.label = bd.doubleValue();
this.setCheck(false);
}
public boolean levelSame(AreaTerminalFinalModel a) {
return this.getLevelMark().equals(a.getLevelMark());
}
}这是我的测试代码:
package sn.utils;
import java.util.LinkedList;
import java.util.List;
import sn.model.AreaTerminalFinalModel;
public class TestList {
public static void main(String[] args) {
List<AreaTerminalFinalModel> list
= new LinkedList<AreaTerminalFinalModel>();
String[] name = {"标准C1","正规工具","测试代码","实验室","公关系统","航空交通","河流","道路","一心一意","PIC","无良商家","happy",};
Float[] num = {0.35f , 4f ,1.1f , 726f , 2.8f , 0f , -12f , 23f , 9f};
for (int i = 0 ; i < 36 ; i ++) {
list.add(new AreaTerminalFinalModel((int)(Math.random()*10),
name[(int)(Math.random()*12)],
num[(int)(Math.random()*num.length)]));
}
for (int i = 0 ; i < list.size() ; i ++) {
for (int j = i+1 ; j < list.size() ; j ++) {
if(list.get(i).getMark().intValue() ==
list.get(j).getMark().intValue()
&& list.get(i).levelSame(list.get(j)))
{
Double a = (list.get(i).getLabel()==null && !list.get(i).isCheck())?0.0:list.get(i).getLabel();
Double b = (list.get(j).getLabel()==null && !list.get(j).isCheck())?0.0:list.get(j).getLabel();
list.get(i).setLabel(a+b);
list.get(j).setCheck(true);
}
}
}
synchronized (list) {
for (int i = 0 ; i < list.size() ; i ++) {
if(list.get(i).isCheck()) {
list.remove(i);
}
}
}
for (int i = 0 ; i <list.size() ; i++) {
System.out.println(list.get(i).getMark()
+"---\t"+list.get(i).getLevelMark()
+"---\t"+list.get(i).isCheck());
}
}
}预期输出中本不应该出现 true的,但是它确确实实出现了,我不是太会synchronized的用法,所以大神见怪请轻拍。
预期输出:
...
..
.4--- happy--- false
1--- 无良商家--- false
5--- 正规工具--- false
2--- 公关系统--- false
0--- 道路--- false
7--- happy--- false
1--- 道路--- false
8--- 一心一意--- false
3--- 道路--- false
8--- happy--- false
6--- PIC--- false
3--- 无良商家--- false
7--- 测试代码--- false
3--- PIC--- false
0--- 一心一意--- false
0--- happy--- false
实际输出:
...
..
.
0--- 标准C1--- true
.
..
...
请指教!
...全文
相关推荐
Java LinkedList集合功能实例解析
主要介绍了Java LinkedList集合功能实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
LinkedList
LinkedList
ArrayList-LinkedList:ArrayList和LinkedList的完整演示
ArrayList-LinkedList ArrayList和LinkedList的完整演示。 我们如何添加,删除和遍历列表
深入浅析ArrayList 和 LinkedList的执行效率比较
主要介绍了ArrayList 和 LinkedList的执行效率比较的相关资料,需要的朋友可以参考下
arraylist-linkedlist-test.zip
该文件内容主要是关于LinkedList在新增/删除元素时效率是否比 ArrayList 高,对比插入和删除时需要花费的时间



