用ArrayList集合删除小于某一个数的小技巧 例:在(88,99,66,78,63,100)中要求筛选出高于85分的同学,并输出结果。
代码如下:public class ArrayListDome1 { public static void main(String[] args) { ArrayList list = new ArrayList(); list.add(88);//先用add方法把已知数值放到集合里 list.add(99); list.add(66); list.add(78); list.add(63); list.add(100); System.out.println(list); System.out.println("--------------------------------"); //方法1: for (int i = 0; i < list.size(); i++) { int s = list.get(i); if (s < 85) { list.remove(i); } } System.out.println(list);
}
分析:不能直接用remove方法,因为删完一个数值下一个数值就会填充上来,i在自增,会忽略掉某个数。
修改:
public class ArrayListDome1 { public static void main(String[] args) { ArrayList list = new ArrayList(); list.add(88);//先用add方法把已知数值放到集合里 list.add(99); list.add(66); list.add(78); list.add(63); list.add(100); System.out.println(list); System.out.println("--------------------------------"); //方法1: for (int i = 0; i < list.size(); i++) { int s = list.get(i); if (s < 85) { list.remove(i); i--;//让i的位置保持不动 } } System.out.println(list);
}
其实还有一种方法,就是从后面遍历删除。
public class ArrayListDome1 { public static void main(String[] args) { ArrayList list = new ArrayList(); list.add(88);//先用add方法把已知数值放到集合里 list.add(99); list.add(66); list.add(78); list.add(63); list.add(100); System.out.println(list); System.out.println("--------------------------------"); /*演示 [88,99,66,78,63,100] 1 i 2 i[88,99,66,78,100]] 3 i (核心:i--不影响它的位置) 依次类推即可,*/ //方法2:从后面遍历删除 for (int i = (list.size() - 1); i >= 0 ; i--) { int s1 = list.get(i); if(s1 < 85){ list.remove(i); } } System.out.println(list); } }
注意 :方法二中删除了小于85的数,i-- 但是位置是没有改变的。
希望这些小知识能够帮助大家(*^_^*)。