package com.github.wxiaoqi.security.generator.controller;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class test {
public static void main(String[] args) {
//进来方法后,首先初始化ArrayList,在走断点
System.out.println("22");
// 初始化参数为-1 就会报错java.lang.IllegalArgumentException: Illegal Capacity: -1
// list最大值是 2147483638 2的31次方-8 超过这个值,系统就报内存溢出
// 报错:java.lang.OutOfMemoryError: Requested array size exceeds VM limit
// Object [] objects= new Object[2147483638];;
List<String> lists = new ArrayList<String>(3);
System.out.println("333");
for(int i=0;i<10;i++){
lists.add(""+i);
}
//这样不会报错,可以删除list中元素
// int l_size=lists.size();
// for(int i=l_size-1;i>=0;i--){
// if(lists.get(i).equals("2")){
// lists.remove("2");
// }
// }
//这样会引起下标越界,因为list移除一位,size减一,但是i是自增的
// 报错:java.lang.IndexOutOfBoundsException: Index: 3, Size: 3
// int l_size=lists.size();
// for(int i=0;i<l_size;i++){
// if(lists.get(i).equals("2")){
// lists.remove("2");
// }
// }
//只要list有添加或删除,modCount就会添加一,每次遍历时都会去检查对比是否有修改
//报错:java.util.ConcurrentModificationException
//
// private void fastRemove(int index) {
// modCount++; //删除或新增时会加一
// int numMoved = size - index - 1;
// if (numMoved > 0)
// System.arraycopy(elementData, index+1, elementData, index,
// numMoved);
// elementData[--size] = null; // clear to let GC do its work
// }
// for(String s :lists){
// if(s.equals("4")){
// lists.remove(s);
// }
// }
//如果是倒数第二位,不会报错,cursor和size是一样,最后一位不遍历
// for(Iterator i = lists.iterator(); i.hasNext();){
// String s = (String)i.next();
// if(s.equals("3")){
// lists.remove(s);
// }
// }
// Iterator<String> it = lists.iterator();
// while(it.hasNext()){
// String x = it.next();
// if(x.equals("8")){
// it.remove(); //这个是跌倒器的remove,不是lists.remove
// // lists.remove("8"); //这样会报错
// }
// }
// System.out.println(lists);
//jdk1.8,集合数越多,扩容数量就越大,
// int oldCapacity =1000;
// int is= oldCapacity>>1; //根据size,右移动,在扩容
// int iss= Integer.MAX_VALUE - 8;
// System.out.println("===="+iss);
//挨个删除list元素
}
}
|