Java学习day02--Collection类及泛型
Collection类常用方法和泛型介绍
- Collection是List和Set的父类,这三个均为抽象类。List的子类有ArrayList,LinkedList;Set的子类有HashSet,LinkedHashSet。
- 泛型,该部分主要将泛型类、泛型方法、含有泛型的接口,以及3种泛型通配符。
Collection类常用方法
public boolean add(E e);
为集合添加元素,有返回值,且如果是List集合,永远返回true;如果是Set,当重复添加元素时返回fasle。
注意:
Collection<String> list = new ArrayList<>();
这样定义的话,list是指向子类ArrayList的实例,list仍是Collection类,不能调用ArrayList类的特有方法。
-
public void clear()
清空集合里面的对象,但不成为空指针null -
public boolean remove(E e)
清除某个对象;如果有重复多个,清除第一个;若清除集合没有的元素,返回false -
public boolean contains(E e)
判断是否包含对象e -
public boolean isEmpty()
判断对象是否为空 -
public int size()
返回集合对象的个数 -
public Object[] toArray()
将集合转化为数组 -
public Iterator<E> iterator()
获可遍历元素的迭代器,该方法配合下述迭代器讲解食用
迭代器
由于Collection类没有定义获取元素的方法,故选择迭代器对集合元素进行访问
public boolean hasNext()
判断是否有元素可迭代public E next()
遍历获取元素。这两个一般结合使用,如:
Collection<String> list = new ArrayList<>();
list.add("abc");
list.add("def");
list.add("ghi");
Iterator<String> it = list.iterator(); // 得到一个迭代器对象
while(list.hasNext()){
System.out.println(it.next()); // 遍历打印集合里面的每一个元素
}
- foreach其实也是一个迭代器,可迭代数组、集合Collection。
泛型
- 泛型类
public class MyArrayList<T>()
- 泛型方法
public class MyList {
public <T> void show(T e1,T e2,T e3) {
System.out.println("show()...");
}
}
测试类:
public class Demo {
public static void main(String[] args) {
MyList myList = new MyList();
myList.<Integer>show(1,2,3);
myList.<String>show("a", "b", "c");
}
}
- 含有泛型的接口
public interface Animal<E> {
public void show(E e);
public E get();
}
- 泛型通配符
(1)ArrayList<?>
表示任意类型
(2)ArrayList<? extend P2>
可匹配P2或P2的所有子类
(3)ArrayList<? supper P2>
可匹配P2或P2的所有父类
Tips:
Collections.shuffle(Collection); //洗牌操作。