关于 List.subList(索引一,索引二)的一些坑 " java.lang.IndexOutOfBoundsException: toIndex = 10
第一步:错误代码展示
public static void main(String[] args) {
Map< String, Object> map = new HashMap<String, Object>();
List<Map> list = new ArrayList<Map>();
map.put("a", "as");
map.put("b", "as");
map.put("c", "as");
map.put("d", "as");
map.put("e", "as");
map.put("f", "as");
for (int i=0;i<=3;i++) {
Map< String, Object> map2 = new HashMap<String, Object>();
map2.put("a", "as");
map2.put("b", "as");
map2.put("c", "as");
map2.put("d", "as");
map2.put("e", "as");
map2.put("f", "as");
//map转化为json字符串
list.add(map2);
}
map.put("mList", list);//将list<map>集合写入map,如果此泛型不是map而是其他类型则在外层转化为json格式时,则list内部数据转化失败
map.put("g", "as");
map.put("h", "as");
map.put("j", "as");
map.put("k", "as");
map.put("l", "as");
// String jsonString = JSONObject.toJSONString(map);
// System.out.println(jsonString);
// System.out.println(map);
//------------------------------------------------------------------------------------
//如下是关于sublist()方法的一些小坑实验
//直接借用上面的集合
System.out.println(list.size());//我们可以先看到list集合的长度
int begin = 0;
int end = 10;
// if(end>list.size()) {
// end = list.size();
// }
List<Map> subList = list.subList(begin, end);
System.out.println(subList.toString());//此时展示的时list集合分页后的数据
}
错误效果展示:
正确代码展示:
public static void main(String[] args) {
Map< String, Object> map = new HashMap<String, Object>();
List<Map> list = new ArrayList<Map>();
map.put("a", "as");
map.put("b", "as");
map.put("c", "as");
map.put("d", "as");
map.put("e", "as");
map.put("f", "as");
for (int i=0;i<=3;i++) {
Map< String, Object> map2 = new HashMap<String, Object>();
map2.put("a", "as");
map2.put("b", "as");
map2.put("c", "as");
map2.put("d", "as");
map2.put("e", "as");
map2.put("f", "as");
//map转化为json字符串
list.add(map2);
}
map.put("mList", list);//将list<map>集合写入map,如果此泛型不是map而是其他类型则在外层转化为json格式时,则list内部数据转化失败
map.put("g", "as");
map.put("h", "as");
map.put("j", "as");
map.put("k", "as");
map.put("l", "as");
// String jsonString = JSONObject.toJSONString(map);
// System.out.println(jsonString);
// System.out.println(map);
//------------------------------------------------------------------------------------
//如下是关于sublist()方法的一些小坑实验
//直接借用上面的集合
System.out.println(list.size());//我们可以先看到list集合的长度
int begin = 0;
int end = 10;
if(end>list.size()) {
end = list.size();//当最大长度小于结束索引的时候,就必须将结束索引置为数据最大长度,否则将报错
}
List<Map> subList = list.subList(begin, end);
System.out.println(subList.toString());//此时展示的时list集合分页后的数据
}
正确效果展示: