持有对象-基本概念
Collection接口是容器类统一都实现的接口
package com.example.demo;
import com.example.demo.demos.web.apple;
import com.example.demo.demos.web.orange;
import java.util.ArrayList;
import java.util.Collection;
public class TestClass {public static void main(String[] args) {Collection collection = new ArrayList<>();collection.add(new apple());collection.add(new orange());System.out.println(collection);collection.forEach(t->{System.out.println(t);});}}
所以都可以用Collection类型接收,调用通用方法,但是如果是LinkedList这些具有自己类特殊方法的,就不适合用Collection类型做向上转型,而是用具体的容器类去实现比较方便
添加一组元素
package com.example.demo;import java.util.Arrays;
import java.util.Collection;public class TestClass {public static void main(String[] args) {Collection collection = Arrays.asList(1, 2, 3, 4);collection.add(2);}}
这些容器类都是实现了Collection,所以都可以定义为Collection类型, Arrays.asList可以传入可变参数初始化一个数组,因为底层实现是数组,所以add方法会报错
Exception in thread "main" java.lang.UnsupportedOperationExceptionat java.util.AbstractList.add(AbstractList.java:148)at java.util.AbstractList.add(AbstractList.java:108)at com.example.demo.TestClass.main(TestClass.java:12)Process finished with exit code 1
可以用Collections.addAll添加一组元素,但是只能传入Collection类型,速度会比具体的容器类更快
package com.example.demo;import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;public class TestClass {public static void main(String[] args) {Collection collection = new ArrayList();collection.add(1);collection.add(2);collection.add(3);Collections.addAll(collection,5,6,7,7);System.out.println(collection);}}