zoukankan      html  css  js  c++  java
  • java集合

    1、集合概念

    回忆数组–数组有固定的长度
    int[] arry=new int[10];

    针对数据长度可变的情况—》集合
    java集合 应对动态增长数据(在编译的时候无法知道具体的数据量)
    集合类–>可变容器类

    2、集合和数组的区别

    都是容器
    (1)数组是固定长度,集合的长度是可变的
    (2)数组放的数据都是基本类型数据(四类8种),但是集合放的数据都是引用数据类型
    (String、自定义的对象、Integer–int、Long)
    (3)集合中对于基本数据会转换为引用数据类型再存储

    3、集合包含内容

    (1)Collection–接口 Interface

    Interface Collection<E>---add 方法
    public abstract class AbstractCollection<E> extends Object implements Collection<E>
    public abstract class AbstractList<E> extends AbstractCollection<E> implements List<E>

    a、List(接口)集合—特定顺序的元素

    public interface List<E> extends Collection<E>

    add(int index, E element) —指定索引处增加元素的位置
    iterator() 以正确的顺序返回该列表中的元素的迭代器

    b、Set(接口)集合–不能够有重复的元素

    (2)Map–类似于数据库
    主要存储”键值对” key-value MapReduce

    (3)Iterable 集合的访问迭代 返回此集合中的元素的迭代器
    没有关于元素返回顺序的保证(除非这个集合是提供保证的某个类的实例)

    4、集合框架->集合的继承关系图

    Collection接口 Map
    Collection 、Map 、List 、Set 等都是 Interface
    AbstractCollection、 Abstractlist等 抽象类 实现了 Interface的部分方法
    ArrayList 、LinkedList等 具体实现类 实现了 所有方法

    5、List集合介绍

    List集合是一个有序(索引有序)、可重复的集合,集合中每个元素都有对应的顺序索引
    List允许加入重复元素是因为可以通过索引来访问指定位置的元素
    List集合默认按照元素的添加顺序增加元素的索引

    6、List集合->ArrayList

    (1)ArrayList简介
    ArrayList 是基于数组实现的List类。实现所有可选列表操作,并允许所有元素,包括null
    (2)初始化 ArrayList

    ArrayList<E> arrayList=new ArrayList<E>();---初始数据类型为E,容量大小为10List

    (3)主要方法
    boolean add(E e) 将指定的元素追加到此列表的末尾
    void add(int index, E element) 在此列表中的指定位置插入指定的元素
    boolean addAll(Collection<? extends E> c) 按指定集合的Iterator返回的顺序将指定集合中的所有元素追加到此列表的末尾
    boolean addAll(int index, Collection<? extends E> c) 将指定集合中的所有元素插入到此列表中,从指定的位置开始
    boolean contains(Object o) 如果此列表包含指定的元素,则返回 true
    E get(int index) 返回此列表中指定位置的元素
    E remove(int index) 删除该列表中指定位置的元素
    E set(int index, E element) 用指定的元素替换此列表中指定位置的元素
    Object[] toArray() 以正确的顺序(从第一个到最后一个元素)返回一个包含此列表中所有元素的数组

    (4)List集合遍历的四种方法
    a、通过 List.size
    b、通过Iterator
    boolean hasNext() 如果迭代具有更多元素,则返回 true
    E next() 返回迭代中的下一个元素

    7、List集合->LinkedList

    LinkedList 指的是链表类数据结构
    与ArrayList的不同
    (1)链表中的元素可以任意的增加和删除,效率很高,但是 查询效率不如ArrayList(有索引)
    a->b->c….
    (2)将对象存放在独立的空间中,而且每个空间保存了下一个连接的索引
    (3)初始化
    LinkedList linkedlist=new LinkedList();
    (4)主要的方法
    void addFirst(E e) 在该列表开头插入指定的元素
    void addLast(E e) 将指定的元素追加到此列表的末尾
    E peekFirst() 检索但不删除此列表的第一个元素,如果此列表为空,则返回 null
    peekLast() 检索但不删除此列表的最后一个元素,如果此列表为空,则返回 null
    pop() 从此列表表示的堆栈中弹出一个元素

    8、Set接口的介绍

    set集合存放无序不可重复的元素
    list集合 存放有序可重复的元素。—索引
    set集合不按照特定方式进行排序,只是放元素放在集合
    set主要是由 HashSet和TreeSet具体实现类实现

    9、Set集合->HashSet

    Hash(哈希算法)—-哈希函数定义的好坏
    HashCode—哈希值
    (1)equals()方法判断两个元素的HashCode值是否相同
    (2)如果Hashcode值相同,继续与集合的元素作比较,
    如果还相同则视为同一个对象,不保存在HashSet中
    如果对象不相同,理论上要存储(比价麻烦)–避免发生
    (3)如果HashCode值不相同,直接把元素存放在该元素的Hashcode位置
    public class HashSet extends AbstractSet implements Set, Cloneable, Serializable
    (4)构造函数
    HashSet hashSet=new HashSet();
    boolean add(E e) 将指定的元素添加到此集合(如果尚未存在)
    boolean contains(Object o) 如果此集合包含指定的元素,则返回 true

    10、Set集合->TreeSet

    TreeSet 是一个有序集合,默认将元素按照升序排列,Comparable接口
    equals方法 判断元素是否重复
    比较器 比较一下大小顺序

    11、Map 集合

    Set 与list 都属于 Collection
    Map每个元素的值都包含两个对象:key-value 键值对
    key不能够重复;唯一的key 可以对应多个value
    map中不存在索引,有key
    循环访问的方式

    12、Map集合->HashMap

    Hash算法
    public class HashMap<K,V>extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable
    允许null的值和null键
    (1)初始化
    HashMap<key,value> hashMap=new HashMap<key,value> ();

    (2)主要的方法
    put(K key, V value) 将指定的值与此映射中的指定键相关联
    get(Object key) 返回到指定键所映射的值,或 null如果此映射包含该键的映射
    Set keySet() 返回此地图中包含的键的Set视图
    boolean containsKey(Object key) 如果此映射包含指定键的映射,则返回 true
    boolean containsValue(Object value) 如果此地图将一个或多个键映射到指定值,则返回 true

    13、Map集合->HashTable

    不接受 Null
    为了成功的在hashtable中存储和获取对象,用作键的对象必须实现 hashcode和equals方法

    14、总结

    集合动态可扩展
    Set代表无序集合不重复,(TreeSet 有序)
    List集合有序可重复
    Map 集合存储键值对- key value
    自定义对象 要重写 方法(HashCode Comparator equals等)

  • 相关阅读:
    node.js代码
    弹性盒和多列布局
    浏览器兼容性
    图片整合与宽高自适应
    百度分享自定义设置
    设置Cookie,登录记住用户登录信息,获取用户登录过得信息
    验证用户是否登录,是否有过注册信息
    循环显示切换
    ajax提交表单 验证
    简单易用的点击展开伸缩效果
  • 原文地址:https://www.cnblogs.com/hsiehchou/p/10403378.html
Copyright © 2011-2022 走看看