- 类型不兼容的错误集合
package com.yuanzijian02; import java.util.ArrayList; public class ArrayList2 { public static void main(String[] args) { // TODO 自动生成的方法存根 ArrayList list = new ArrayList(); list.add("hello"); list.add(new Integer(2)); String str = (String)list.get(0); String in = (String)list.get(1); } }
执行结果
Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String at com.yuanzijian02.ArrayList2.main(ArrayList2.java:14)
2.从集合中取出数据,然后相加
package com.yuanzijian03; import java.util.ArrayList; public class ArrayListTest3 { public static void main(String[] args) { // TODO 自动生成的方法存根 ArrayList list = new ArrayList(); list.add(new Integer(3)); list.add(new Integer(4)); list.add(new Integer(5)); list.add(new Integer(6)); int sum = 0; for(int i = 0; i< list.size(); i++){ int value = ((Integer)list.get(i)).intValue(); sum += value; } System.out.println(sum); } }
执行结果
18
3.重写toString()方法
package com.yuanzijian05; import java.util.ArrayList; public class ArrayListTest5 { public static void main(String[] args) { // TODO 自动生成的方法存根 ArrayList list = new ArrayList(); list.add(new Point(2,3)); list.add(new Point(2,2)); list.add(new Point(2,4)); list.add(new Point(2,5)); for(int i = 0; i < list.size(); i++){ System.out.println(list.get(i)); } System.out.println(list); } } class Point{ int x; int y; Point(int x, int y){ this.x = x; this.y = y; } @Override public String toString() { // TODO 自动生成的方法存根 return "x = " + this.x + ", y = " + this.y; } }
执行结果
x = 2, y = 3 x = 2, y = 2 x = 2, y = 4 x = 2, y = 5 [x = 2, y = 3, x = 2, y = 2, x = 2, y = 4, x = 2, y = 5]
4.在集合中存放的依然是对象的引用而不是对象的本身
5.ArrayList底层采用数组实现,当使用不带参数的构造方法生成ArrayList对象时,实际上会在底层生成一个长度为10的Object类型的数组
6.如果增加的元素个数超过了10个个,那么ArrayList底层会新生成一个数组,长度为原数组的1.5倍+1,然后将原数组的内容复制到新数组当中,并且后续增加的内容会放到新的数组当中,但新数组无法容纳增加的元素时,重复该过程
7.对于ArrayList元素的删除操作,需要将被删除元素的后续向前移动,这是一个代价比较高的元素
8.集合当中只能放置对象引用,无法放置原生数据类型,我们需要使用原生数据类型的包装类才能加入到集合当中
9.集合当中放置的都是Object类型,因此取出来的也是Object类型,那么必须要使用强制类型转换将其转换为真正的类型(放置进去的类型)。
时间: 2024-10-03 19:55:59