博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java学习笔记--集合
阅读量:4707 次
发布时间:2019-06-10

本文共 1565 字,大约阅读时间需要 5 分钟。

学习集合需要掌握1136, 即一个图,一个类(Collections),三个知识点(foreach, 泛型, 自动打包和解包),六个接口(Collection,  List, Set, Map, Iterator, Comparable).

1. 一个图:Map存储的是键值对,可以认为是双列Collection.

  

2. 一个类:java.utils.Collections类

  java.utils.Collections类提供了一些静态方法实现了基于List容器的一些常用算法。

    void sort(List), 对List容器内的元素排序

      void shuffle(List), 对List容器内的对象进行随机排序

      void reverse(List), 对List容器内的对象进行逆序排列

      void fill(List, Object), 用一个特定的对象重写整个List容器

      void copy(List dest, List src), 将src List容器内容复制到dest List容器

      int binarySearch(List, Object),   对于顺序的List容器,采用折半查找的方法查找特定对象 

 3. Comparable接口:

     大家或有疑问,上面那的算法是根据什么来确定容器中的对象的“大小”顺序的呢?

     所有可以"排序"的类都实现了java.lang.Comparable接口,Comparable接口中只有一个方法:

     public int compareTo(Object obj), 改方法的返回值:

     返回0, 表示this == obj

     返回正数, 表示this > obj

     返回负数,表示this < obj

   实现了Comparable接口的类通过实现compareTo方法从而确定该类对象的排序方式。

   注意重写compareTo(Object o)的时候要先判断o是不是当前类类型的:不是,就抛出一个异常;是,接着写判断逻辑

4.如何选择数据结构

  衡量标准: 读的效率和改的效率

  Array读快改慢,集合占用一块连续的内存

  Linked改快读慢, 集合中的元素分散在内存中,通过指针相连

  Hash两者之间

5.Map接口

   实现Map接口的类用来存储键-值对。

   Map接口的实现类有HashMap(以Hash表作为索引)和TreeMap(以Tree作为索引)等。

   Map类中存储的键-值对通过键来标识,所以键的值不能重复。

    常用方法:

    Object  (Object key, Object value), 往容器里添加键值对,如果key已经存在,则将key对应的value的值设置为新value,返                      回值是原来的value。

    Object  ( key), 找到key对应的value,找不到,则返回 null

    Object  ( key),  如果存在一个键的映射关系,则将其从此映射中移除(可选操作)。

    boolean ( key), 如果此映射包含指定键的映射关系,则返回 true

   boolean ( value), 如果此映射将一个或多个键映射到指定值,则返回 true

     int (), 返回此映射中的键-值映射关系数。

     boolean (), 如果此映射未包含键-值映射关系,则返回 true

     void ( m), 从指定映射中将所有映射关系复制到此映射中(可选操作)。

     void (), 从此映射中移除所有映射关系(可选操作)。

6. 自动装箱拆箱

    自动将基础类型转换为对象

    自动将对象转换为基础类型

 

转载于:https://www.cnblogs.com/byron0918/p/4628953.html

你可能感兴趣的文章
查看手机已经记住的WIFI密码
查看>>
最新版IntelliJ IDEA2019 破解教程(2019.08.07-情人节更新)
查看>>
C# 两个datatable中的数据快速比较返回交集或差集
查看>>
关于oracle样例数据库emp、dept、salgrade的mysql脚本复杂查询分析
查看>>
adb shell am 的用法
查看>>
iOS10 UI教程视图和子视图的可见性
查看>>
FindChildControl与FindComponent
查看>>
中国城市json
查看>>
android下载手动下载Android SDK
查看>>
C++学习:任意合法状态下汉诺塔的移动(原创)
查看>>
leetcode133 - Clone Graph - medium
查看>>
UNET学习笔记2 - 高级API(HLAPI)
查看>>
"ORA-00942: 表或视图不存在 "的原因和解决方法[转]
查看>>
Oauth支持的5类 grant_type 及说明
查看>>
C#中用DateTime的ParseExact方法解析日期时间(excel中使用系统默认的日期格式)
查看>>
W3100SM-S 短信猫代码发送 上
查看>>
netty接收大文件的方法
查看>>
软件工程设计之四则运算
查看>>
SpringMVC @ResponseBody 406
查看>>
Partial Tree UVALive - 7190(完全背包)
查看>>