集合

List

ArrayList(基于数组结构的集合,无序可重复)的遍历

第一种方法for循环,通过get方法,拿到指定的元素

第二种方法增强for循环,使用增强for循环的时候,源必须是数组或者Iterable的实例

第三种方法:迭代器

由于Arraylist实现了Iterable接口,ArrayList对象就是Iterable的实例;

Arraylist是个类,ArrayList实现了Iterable接口,那就可以使用了Iterable里面的方法;

Iterable 接口里面的方法:

iterator()  返回一个在一组 T 类型的元素上进行迭代的迭代器。

由于ArrayList实现了Iterable接口,Iterable接口里面有iterator()方法,

那ArrayList也可以调用iterator()方法;调用方法,得到一个迭代器

在Iterator 还有个子接口 ListIterator ,它是双向迭代器

LinkedList(基于链表结构的集合,无序可重复)的遍历

LinkedList 属于java.util包下面,也实现Iterable接口,说明可以使用迭代器遍历

Set

HashSet(不重复,无序,不保证和添加顺序一致)

判断重复的标准:

通过添加进去的元素的hashCode+eqauls  两者进行比较

如果两个对象的hashCode相等  并且 两个对象调用equals结果是true  才认为两个元素重复

TreeSet(不重复,无序)

无序:不保证(不记录)我们的添加顺序;但是可以保证添加里面元素是有序的

判断重复的标准:

如果采用的是自然排序调用对象的compareTo方法,如果返回0 表示相等;

如果使用的定制排序(比较器),调用比较器的方法compare 返回0 表示相等

TreeSet内部存储数据是按照大小进行排序的

在设计TreeSet之前Java设计了一个接口

Comparable接口

    compareTo(Object obj)比较大小的方法

所有TreeSet中就会调用compareTo方法

我们传给TreeSet的对象必须实现了Comparable接口

自然排序  Comparable

此接口强行对实现它的每个类的对象进行整体排序。这种排序被称为类的自然排序,类的 compareTo 方法被称为它的自然比较方法

如果一个类实现了Comparable接口,可以认为这个类的对象具有自然排序的能力(本质就是这个对象可以调用比较的方法compareTo),这种比较和排序的规则就是自然排序

定制排序(比较器)Comparator

Comparator 是一个比较器的接口(标准),必须得有进行比较的方法 :compare(Object o1,Object o2);

Map

Map :将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值

Map是一个接口,通过它的实现类来创建对象

 |---HashMap  判断重复的标准和HashSet一致,通过键的hashcode和equals;

 |---TreeMap   判断重复的标准和TreeSet一致,1通过自然排序(Comparable接口),2定制排序(Compartor比较器)

Map的存储原理也是类似:利用封装的,如果要封装,首先有个类型,这个类型是Entry,

Entry类型作用:Entry用来封装用户添加的一对数据.Entry类型有两个字段,添加的时候,使用Entry把两个值封装成一个对象,然后放到Map容器里面。对于Map而言,看到的只有Entry对象。

由于Entry的存在,只是对于Map来讲才有意义. 因此它使用封装,把Entry类型设计到Map里面。相当于内部类

values()    返回所有的values,存储到一个Collection,为什么返回Collection,因为values有重复,set不能含有重复

map的遍历

第一种方法keyset方式

先得到所有key, 通过keySet方法取到;

然后遍历keySet,依次通过key来查找value。

通过Object get(Object key)方法

第二种方法Entry方法

先得到所有的Entry对象,Entry对象就包装了key,values;

遍历Entry对象的集合,然后依次从Entry对象中调用方法:getKey(),getValue()

转载于:https://my.oschina.net/u/4083438/blog/3029658

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值