Java 容器类

1.数组的长度不可变, 作为容器呢,不是很方便, 需要时还得new一个更长的数组,然后copyArray.

2.Java 提供了其他的容器类,用来装东西的,变长, 放在堆空间中。

Collection 里面的东西都是对象,向Collection 中添加的必须是Object必须是引用类型的对象。 因为基础数据类型是放在栈空间中的,加到堆中的容器中,基本数据类型在stack中容易被收走

容器里面装的是对象的引用,当你打印时,调用对象的toString 方法。

容器中,两个对象是否相等是否重复,看他们是否equals, 需要重写根基类Object的equals方法,因为两个对象的引用要想相等太难了,是不可能相等的。

重写自定义类的equals方法,必须重写hascode方法,因为 hascode 方法,相当于键值对里面的index, 一个index, 只能对应唯一的一个值,不能对应多于一个的值。 通过对象的hascode可以找到对象的物理地址,就能找到对象

 

如果两个对象互相equals,那么两个对象的hashcode 值一定相等

 

当一个对象被当做键值对中的键(索引) 来使用的时候,会使用hashcode方法; 因为调用这个对象的hashcode 方法,拿到hashcode值,再去找 这个对象对应的值 效率 会高, 比你把所有的对象都拿出来,挨个的做比较(看他们是否equals),效率会高很多,哈希code 就是一个int数啊,快啊

Object类中的hashcode方法 是返回这个对象的hascode 值,是一个整数,当我们需要重写时,可以简单写成对象的某个字符串属性的 hashcode方法

 

容器类对象 在调用remove(),contains方法时,需要比较对象是否相等,涉及到对象类型的equals() 和 hashcode()方法;对于自定义的类型,需要重写equals和 hashcode 方法以实现自定义的对象相等规则,注意相等的对象应该具有相等的hash code 

通过hashcode可以找到对象在内存里面的地址,但不是物理地址

 

数组是容器,set, list, map,一共四种都是jdk提供的容器,容器在jiavaa 中是以接口来定义的, 然后有几个实现这个接口的实现类,ArrayList , LinkedList, HashSet, HashMap, 这四种类,用这几种类的对象来装东西

Interitor 是统一的遍历java所有容器的一种方法,一个方法,统一的方法 

iteritor在循环遍历过程中会对容器进行锁定,别人不能动,因此只能用iterator的remove方法不能用容器自身的iteritor方法,现在容器自身不能动

 

Set 无序,不能重复。没有添加新的方法

List 有顺序,可以重复,提供了一些方法 根据位置 存取元素

 Object get(int index);

Object set(int index,Object element ) , 返回来的是,原来index位置上的元素

Void add(int index, Object) 在第几个位置上添加。。 原来这个位置上的元素以及之后的元素都被向后顺移一个位置。

Object remove(int index);

int indexOf(Object o);

int lastIndexOf(Object o); 

在第几个位置上添加,获取第几个位置上的元素,设置第几个位置上的元素,删除第几个位置上的元素,某个元素所在的位置是多少,最后一次出现的位置是多少

 

一个类的对象之间比较大小的方式,排序的方式

改写name类让他能实现排序

Comparable 接口定义了一个类的2个对象之间互相怎么比较大小

Map<> 键值对 中的键不能重复,重复指的是两个对象(键)不能equals,

拿出每个对象的hashcode来比较,比拿出来两个对象来比较是否equal快一些。

map规定了,键值对必须都是对象。

容器里面装的也都是对象吧? 是的,集合规定,所有装进去的东西都被当做对象,取出来时都需要强制转型

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值