02 集合框架之Collection、泛型

一、集合和数组的区别?

1.数组长度固定,集合长度可变

2.集合存储的都是对象,

ArrayList<Integer>

Java Integer(-128~127)值的==和equals比较产生的思考

对于下图,如果Integer的值在(-128~127)则用==和equals比较的话,效果是一样的,但是不建议包装类型用==(地址值的比较)

二、集合框架

Collection接口中的方法(底下的接口/实现类都可以使用)

共性的方法:

public boolean add(E e): 把给定的对象添加到当前集合中 。

public void clear() :清空集合中所有的元素。

public boolean remove(E e): 把给定的对象在当前集合中删除。

public boolean contains(E e): 判断当前集合中是否包含给定的对象。

public boolean isEmpty(): 判断当前集合是否为空。

public int size(): 返回集合中元素的个数。

public Object[] toArray(): 把集合中的元素,存储到数组中。

三、迭代器(Iterator 接口)(主要是遍历没有索引的集合)

通过集合的iterator()方法来获取迭代器

Iterator<E>接口也是有泛型的,迭代器的泛型跟着集合走,集合是什么泛型,迭代器就是什么泛型

迭代器中注意两个方法

1.hasNext() ------>判断集合中是否还有下一个元素

2.next() -------->获取集合中的元素

四、增强for循环(foreach循环)作用:主要用于遍历没有索引的集合,但是普通for不可以遍历没有索引的集合

底层使用的也是迭代器,使用增强for循环的格式,简化了迭代器的书写

格式:

小练习(基础练习)

//创建Collection

// 存储 "黄蓉""王语嫣","王语嫣","岳琳珊","东方不败";

//删除所有的王语嫣;

while (collection.contains("王语嫣")){

collection.remove("王语嫣");//这只能删除第一次出现的元素,所以循环删除

}

五、泛型

1.泛型概念:未知的类型

2.泛型可以定义的位置:

        1.接口;

        格式?

        public  interface 接口名 <泛型>{

            //代码

        }

        2.类;

        格式?

        public class 类名<泛型的名称>{

            //使用泛型

        }

        3.方法;

        格式?

        修饰符 <泛型> 返回值类型  方法名(参数列表){

            //方法体

        }

        注意:方法上定义的泛型,它的作用域只是在本方法中

3.什么时候定义泛型呢?

当我定义接口、类或者方法的时候,如果要用一个数据类型,但是我定义的时候不能确定究竟是那种类型的时候,这个时候用一个泛型来代替。

4.泛型通配符(?)

通配符基本使用    

理解如下代码

public static void main(String[] args) {

    Collection<Intger> list1 = new ArrayList<Integer>();

    getElement(list1);

    Collection<String> list2 = new ArrayList<String>();

    getElement(list2);

}

public static void getElement(Collection<?> coll){

}

//?代表可以接收任意类型

泛型的上限

 

格式: 类型名称 <? extends 类 > 对象名称

 

意义: 只能接收该类型及其子类

泛型的下限

 

格式: 类型名称 <? super 类 > 对象名称

 

意义: 只能接收该类型及其父类型

猜你喜欢

转载自blog.csdn.net/woshilovetg/article/details/81568833