List 添加元素的方法通常有① boolean add(E e); ② void add(int index, E element);
① boolean add(E e);每次添加的元素被放置在list的尾部;
② void add(int index, E element);在插入操作过程中指定插入的位置,此时,会自动将当前位置及只有的元素后移进行插入.
需要注意的是,参数index的值不可大于当前list的容量,即不可以随便新建一个list,向其任意的位置插入元素。即便使用new ArrayList(100);在第一次插入时也不能使用list.add(100,1);
1、当业务需要随机向list的每个位置插入数据时,可以使用
List newList = new ArrayList<>();
for(int y=0;y<100;y++){
newList.add("");
}
事先向list中插入空数据,然后使用
newList.set(100, 1);
2、或者将业务数据进行排序,使用① boolean add(E e);方法
或者从0开始依次插入数据② void add(int index, E element);
3、关于代码的bug
向二维数组list<list>中插入数据,横向是头是日期,星期,车辆编号;竖向第一列是该月日期,第二列是该月的日期对应的星期。
从横向数组第2列开始遍历车辆编号,取出每车的数据,然后竖向遍历日期,取出每天的数据。
在这个循环的过程中,data循环一直是从0到最后进行data.add(index,data);但是最后循环25次后出现了数组下标越界的情况,暂时未发现出现这个问题的原因。
int dayNumOfMonth = getDaysByYearMonth(year, m);//获取该月所有天数
for (int d = 1; d <= dayNumOfMonth; d++) {
StringBuffer sb = new StringBuffer();
sb.append(year).append("-").append(m>9?m:"0"+m).append("-").append(d>9?d:"0"+d);
Date date = simpleDateFormat.parse(sb.toString());
data.add(new ArrayList<>(100));
data.get(d).add(0, sb.toString());//设置日期
data.get(d).add(1, getWeekOfDate(date));//设置星期
}
//dataMaps <车辆,Map<日期,数据>>
//遍历车辆
for (int j= 2;j<data.get(0).size();j++) {//定位所在列
//遍历data中的第一列
for (int x = 1; x <= dayNumOfMonth;x++) {//定位所在行
//查询数据回填到
Map<String,String> dataMap = dataMaps.get(data.get(0).get(j));
if(dataMap!=null){
data.get(x).add(j,dataMap.get(data.get(x).get(0)));
}
}
}