除去语法以外超级浓缩版本,或许能帮你考试糊弄过关。
1.集合框架
容器:例如所有可供学生选的课程对象的集合。
特点:可以自由扩展。
2.Collection接口
List接口和实现类ArrayList类
List中元素有序可重复,又称为序列。可以插入指定位置或删除指定位置。
ArrayList底层由数组来构成。
public List coursesToSelect;
coursesToSelect = new ArrayList();//此处coursesToSelect为接口引用
这里开始就能用“List接口名.add(index,obj)方法”添加元素,用“List接口名.get(序号)”获取元素。
注意,获取时需要强制类型转换。
如果预定位置已经有元素,则该位置全部后移,拆入这个元素。
此数组的容量为比已有内容多一位,因此要注意数组下标越界问题。
将数组作为元素同时传入的格式: List接口名. addAll(Arrays.asList(数组名)); addAll方法可以指定位置插入。
3.迭代器遍历List接口
Iterator接口
Iterator it = coursesTOSelect.iterator();
while(it.hasNext())
{
Courses cr1 = (Courses)it.next(); //需要强制类型转换
}
或者用foreach语句
for(Object obj:coursesToSelect)
{
Courses cr = (Courses) obj;
}
修改元素
格式:E.set(index,E)
用例:cousesToSelect.set(4,new Courses("7","毛概"));
删除元素:
remove()和removeAll()方法
用例1:Courses cr2 = (Courses) coursesToSelect.get(4); //先获取该位置的元素
coursesToSelect.remove(cr2); //直接删除元素
用例2:coursesToSelect.remove(4); //直接删除索引位置元素
用例3:
Courses[] courses = {coursesToSelect.get(4),coursesToSelect.get(5)}; //创建待删元素数组
cousesToSelectre.moveAll(Arrays.asList(数组名)) //与addAll类似,不要忘记类型转换
4.泛型
指定固定类型的使用[规范/管理/检查]
例如:public List <Courses> courses;
那么,前面对courses的定义就可以更改为:courses = new ArrayList<Courses>();
之后提取元素也不再需要强制类型转换。
foreach循环便利则变成:for(Courses cr:coursesToSelect){
}
注意:泛型不能用基本类型,只能用包装类或者引用。
5.set接口
无序,不能重复
set无法使用set()和get()方法,因为无序。
且set中可以添加null(无意义)
6.Map接口 & HashMap实现类
Map支持泛型:格式:Map<K,V>
key和value的关系:一个value可以有多个标签,多个key可以是一个value。
用put(key,value)添加,remove(key)删除
对哈希表,因为key不可重复,因此为null的key只能有一个。
哈希表的entry对象是无序的。
用例:管理学生
keySet方法
Set <String> keySet = students.keySet();//通过keySet方法获得map中所有键的集合
//遍历keySet,再调用get()方法来读取每一个键对应的value
for(String stuID : keySet)
{
Student st = students.get(stuID);
}
entrySet方法遍历
Set <Entry<String,Student>> entrySet = students.entrySet();
修改已有映射
用put()方法
7.判断元素是否在List、Set、Map中。
contains方法[应当重写equals方法]
对于set,需要同时更改Hashcode()方法和equals()方法。
只有二者都符合才会返回true。
List中确定位置:indexOf();//第一个索引位置
lastIndexOf();//最后一个索引位置
Map中判断:containsKey(),containsValue()方法
用Collections.sort排序List
Comparable接口和Comparator接口
都是比较规则,后者是临时规则。