Java——容器(双例集合)(下)

   日期:2024-12-26    作者:lzx8706 移动:http://ljhr2012.riyuangf.com/mobile/quote/49442.html

1 TreeMap容器的使用


(对Key排序——>需要给定排序规则)

Java——容器(双例集合)(下)

(TreeMap和HashMap同样实现了Map接口——>用法来说是没有区别)

(TreeMap 和 TreeSet的区别)

(1 元素自身实现比较规则——>实现Comparable接口——>重写compareto方法)

(2 通过比较器(外部定义)实现比较规则——>实现Comparetor接口——>重写compare方法)




TreeMap和HashMap同样实现了Map接口,所以,对于API的用法来说是没有区别的。HashMap效率高于TreeMap;TreeMap是可以对键进行排序的一种容器,在需要对键排序时可选用TreeMap。TreeMap底层是基于红黑树实现的。

在使用TreeMap时需要给定排序规则

  • 元素自身实现比较规则
  • 通过比较器实现比较规则

1.1 元素自身实现比较规则

 
 

1.2 通过比较器实现比较规则

 
 
 




1.3 TreeMap 和 TreeSet的区别

 







2 TreeMap源码分析

(TreeMap是红黑二叉树的典型实现)

(只有在需要排序的Map时才选用TreeMap)

TreeMap是红黑二叉树的典型实现。我们打开TreeMap的源码,发现里面有一行核心代码

 

root用来存储整个树的根节点。我们继续跟踪Entry(是TreeMap的内部类)的代码

可以看到里面存储了本身数据、左节点、右节点、父节点、以及节点颜色。 TreeMap的put()/remove()方法大量使用了红黑树的理论。在此不再展开。需要了解更深入的,可以参考数据结构里面的笔记

TreeMap和HashMap实现了同样的接口Map,因此,用法对于调用者来说没有区别。HashMap效率高于TreeMap;在需要排序的Map时才选用TreeMap。










1 Iterator接口

(定义了迭代单例集合的标准)

(Collection接口继承了Iterable接口,可以迭代所有Collection接口下的容器)

(3个方法)





1.1 Iterator迭代器接口介绍

Collection接口继承了Iterable接口,在该接口中包含一个名为iterator的抽象方法,所有实现了Collection接口的容器类对该方法做了具体实现。iterator方法会返回一个Iterator接口类型的迭代器对象,在该对象中包含了三个方法用于实现对单例容器的迭代处理。

通过游标遍历

1.3 Iterator接口定义了如下方法

  1. //判断游标当前位置的下一个位置是否还有元素没有被遍历
  2. //返回游标当前位置的一个元素并将游标移动到下一个位置
  3. //删除游标当前位置的元素,在执行完next后该操作只能执行一次








2 Iterator迭代器的使用

(获取迭代器对象)

(hasNext(),next()——>在for或者while里面使用)

(如果想迭代map——>1 通过map里面的keySet方法获取所有的key

2 通过Map.entry方法获取所有的键值对对象 ——>这两个方法都是返回set类型)



2.1 迭代List接口类型容器

 

2.2 迭代Set接口类型容器

 

2.3 迭代Map接口类型容器——>(对map容器里面的set进行迭代)

 







3 在迭代器中删除元素

(不要在一次循环中多次调用next方法)

(在迭代时任何操作都不要改变容器长度)

(remove必须在next方法之后使用)

(普通for循环和增强for循环——>都不支持边迭代边删除——>只能使用迭代器)

 








4 遍历集合的方法总结

1 List——>4种

遍历List方法一:普通for循环——>(size和get方法)

 

遍历List方法二:增强for循环(使用泛型)——>(不依赖索引的)

 

遍历List方法三:使用Iterator迭代器(1)——>(实例对象,hasNext(),next()方法)

 

遍历List方法四:使用Iterator迭代器(2)——>(实例对象,hasNext(),next()方法)

 

2 Set——>2种

遍历Set方法一:增强for循环

 

遍历Set方法二:使用Iterator迭代器

 

3 Map——>2种

遍历Map方法一:根据key获取value

 

遍历Map方法二:使用entrySet

 








5 Collections工具类使用

(操作所有容器的工具类)

(提供了对Set、List、Map进行排序、填充、查找元素的辅助方法)

(sort——>排序前提要实现比较规则,前面两种方法)



类 java.util.Collections 提供了对Set、List、Map进行排序、填充、查找元素的辅助方法。

方法名说明void sort(List)对List容器内的元素排序,排序规则是升序。void shuffle(List)对List容器内的元素进行随机排列void reverse(List)对List容器内的元素进行逆续排列void fill(List, Object)用一个特定的对象重写整个List容器int binarySearch(List, Object)对于顺序的List容器,折半查找查找特定对象

Collections工具类的常用方法


特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


举报收藏 0评论 0
0相关评论
相关最新动态
推荐最新动态
点击排行
{
网站首页  |  关于我们  |  联系方式  |  使用协议  |  隐私政策  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号