枚举:
枚举类似类,也是一种数据类型,列举的是一组常量值,不能写数字。
switch支持枚举类型。
字符串转换成枚举类型:
String str = "嘻嘻";
Season season = Season.valueOf(str);
集合:
ArrayList:集合的一个实现类;
父类引用 指向子类对象: Animal an=new Dog();多态的写法,Animal父类,Dog子类;
接口类引用指向实现类对象:List aList=new ArrayList();多态的写法 ArrayList必须是List的实现类;
抽象父类 指向子类对象: Animal an=new Dog();多态的写法,Animal抽象父类,Dog子类;
数组和集合的区别:
1.数组可以是基本数据类型和引用类型;集合只能是引用类型(Object e)
2.数组一旦定义之后,长度就不可变了;arr.length
集合是变长的;内部实现是自动扩充的;不会报超出容量的错误;
3.集合:用来管理对象,就提供了对对象的增删改查的一些方法;而数组没有这些 方法
ArrayList和数组相似度最高
数组:在内存中开辟的是连续的空间;按索引查询快;添加、删除效率低;数组有索引
ArrayList:在内存中开辟的是连续的空间;按索引查询快;添加、删除效率低
ArrayList的方法:
1.添加
aList.add(c);默认添加到最后
aList.add(2, "Hello World");添加到指定的索引位置
aList.addAll(subList);添加一个集合中的所有元素
2.删除
aList.remove(Object obj);//如果有多个相同的元素,删掉第一个
aList.remove(new Integer(123));删除数字
aList.remove(int index);
aList.removeAll(subList);
3.修改
aList.set(0, "Hello Java");
4.查询
Object obj1=aList.get(int index);数组--->arr[i];
迭代器
Iterator it=aList.iterator(); 要有集合对象
三个方法:
it.hasNext();
it.next();
it.remove();
注意:
1.在用迭代器的过程中,不要同时用集合对象(aList)对集合进行操作,会出现 java.util.ConcurrentModificationException并发修改异常。
2.如果要修改,就用迭代器的对象修改。