在上一篇中,介绍了一下集合
ArrayList里 add(Object object)方法,向集合中插入一个object类型的数据,ArrayList是按插入的顺序,有序进行排列,每一个插入的数据都有一个下标,下标跟数组一样从0开始,因为他是连续的,所以我们可以通过get(下标)来获取那个位置的值,跟数组[下标]一样的作用。在ArrayList中,每一次add插入数据之后,会把原来位置的数据往后移一个位置,如果想对原数据进行修改,使用set(int index,Object object)方法,把具体下标的数据换成一个object类型的对象,当我们想得到数组的长度时,是用数组名.length,在集合中,我们想获取元素的数量,集合的容量时,使用集合.size()方法,查找时,用contains(Object object)方法查找,还有可以清空集合的方法,集合.clear(),增删改查都可以通过这些方法来实现。
在集合中接触到一个新概念,叫做迭代器,迭代器就引入了遍历,
ArrayList集合有三种遍历方式,因为他有下标,所以和数组一样,可以用for循环进行遍历,
for(int i = 0;i < 集合.size();i++){
System.out.print(集合.get(i));
}
for(Object o:集合){
System.out.print(0);
}
Iterator it = 集合.iterator();
while(it.hasNext()){
System.out.print(it.next());
}
LinkedList是一个收尾相连的链表,所以他多了几个可以对首尾数据处理的特殊方法,可以对他的首尾进行操作,
对于LinkedList来说多了一种遍历方法
ListIterator<Student> listIterator=students.listIterator();
while(listIterator.hasNext()){
System.out.println(listIterator.next());
}
Map中,常用的HashMap集合,跟list不同的地方是,使用集合.put()方法来插入数据,remove来移除,entrySet(),keySet(),把key放进set集合中,,通过key来获取value的值,entry是一个集合,把数据存进Set集合中
三种遍历方式
Iterator it = map.keySet().iterator();
while (it.hasNext()) {
key = (String) it.next();
value = (String) map.get(key);
System.out.println("key:" + key + "---" + "value:" + value);
}
Iterator it = map.values().iterator();
while (it.hasNext()) {
value = (String) it.next();
System.out.println("value:" + value);
}
Iterator it = map.entrySet().iterator();
while (it.hasNext()) {
Map.Entry entry = (Map.Entry) it.next();
key = (String) entry.getKey();
value = (String) entry.getValue();
System.out.println("key:" + key + "---" + "value:" + value);
}
在这些集合中,插入的对象都是Object,遍历都需要转换类型,很麻烦,所以java为了统一规范,简写代码,引入了一个概念——泛型
泛型的定义方法
Map <参数类型> 集合名 = new <参数类型> ArrayList();
此时这个集合中,所有插入的对象,都是泛型规定的参数类型
泛型不仅仅只作用于集合中,还可以作用在泛型类,泛型方法,
泛型类的定义方法:
class类名<参数类型>{
private <参数类型> 变量名
}
泛型类只支持引用数据类型,不支持基本数据类型,但是可以用基本数据类型的包装类。
public static <E> void print(E... e){
for(int i = 0; i < e.length; i++){
System.out.println(e[i]);
}
}
泛型方法的定义,
访问权限修饰符 <参数类型> 方法返回值 方法名(参数列表){方法体}
在泛型类实例化的时候,要把泛型的参数类型用实际的参数类型来替换。