集合

集合

常用接口

  • Collection接口:保存一个一个对象,无序可重复

    • (boolean)add(E):添加对象
    • (boolean)contains(E):判断集合中有没有E这个对象
    • (boolean)remove(E):从集合中移除对象
    • (int)size():返回元素个数
  • set接口 extends Collection :无序(序:添加顺序)不可重复

    • HashSet:(基于哈希算法)用hash与equals判断重复
    • TreeSet:(基于二叉树)储存元素一致,且能够比较,实现Comparable接口,或者自定义比较接口来比较(优先使用定制排序)
  • list接口 extends Collection :存储有序可重复

    void add(int index,E):添加
    Object get(int index):获取
    Object remove(int index):取出
    Object set(int index,Object E):替换

    • ArrayList:基于数组实现的List集合
    • LinkedList:基于链表实现的List集合
  • HashMap集合:(保存键值对)

    HashTable 是HashMap的古老版本

    Properties是HashTable子类,也是一个map,他其中的键与值都是String

    • Object put(key,values):
    • Object remove(key,values):
    • Object get(key):
  • iterator迭代器:

    迭代器获取迭代器之后必须立马使用,中间不要有其他语句,因为在内部会记录集合的修改次数,如果使用时的次数与获取时的次数不统一,就会出现【ConcurrentModificationException】异常

    • iterator.hasNext():
    • iterator.next():
      在这里插入图片描述

泛型(generic)

让集合像数组一样指定类型

List<Integer> list = new ArrayList<>();

可以让对象中的某个类型变为指定的类型,本质上属于对象,非静态成员变量,不能参与静态变量与方法

Person<String> p1 = new Person("Jason","String");
Person<Integer> p2 = new Person("Tom",30);

泛型涉及到类继承时:子类会默认忽略父类的泛型信息,需要手动指定泛型类型,否则子类的泛型类型即为Object

class stu extends Person{}			//子类中的泛型是Object
class stu extends Person<int>{}		//子类中的泛型是int
class stu<E> extends Person<E>{}	//子类中的泛型继承父类的泛型,即new父类的时候,泛型声明是什么类型,子类泛型就是什么格式

泛型涉及到方法时,再方法中声明中也可以使用泛型,泛型加在返回值类型之前,泛型方法中的类型时依靠方法调用时传入的值指定的类型来确定,

如果传入的参数为null或者没有设定换传入的形参格式,那么此方法的返回值类型为Object

public static xxx test01(){ }

泛型不能多态

通配符

如果在集合中使用到了通配符,那么这个集合不能再存入任何数据,只能取不能存,但唯一可以添加的数据为 NULL ,

//不能添加,
//获取元素类型未知 ,只能为Object
List<?> listN = list;		Object o = listN.get(0)

? super 与 ? extends

下界通配符 与 上界同配符

//存放Number及其未知父类,无论添加任何元素都被父类兼容
//获取元素为Object类型
List<? super Number> list = new Array<Number>();

//存放Number及其未知子类,不能添加任何元素(非NULL)
//获取元素number类型
List<? extends Number> list = new Array<Number>();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值