zoukankan      html  css  js  c++  java
  • Java学习笔记--集合

    学习集合需要掌握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  put(Object key, Object value), 往容器里添加键值对,如果key已经存在,则将key对应的value的值设置为新value,返                      回值是原来的value。

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

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

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

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

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

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

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

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

    6. 自动装箱拆箱

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

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

  • 相关阅读:
    如何绕过chrome的弹窗拦截机制
    自我介绍
    注册页面的编写
    Roadmap学习目标
    Position
    poj2506 Tiling
    poj3278 Catch That Cow
    poj3624 Charm Bracelet
    钢条切割问题带你彻底理解动态规划
    poj1328 Radar Installation
  • 原文地址:https://www.cnblogs.com/byron0918/p/4628953.html
Copyright © 2011-2022 走看看