zoukankan      html  css  js  c++  java
  • 集合框架全部知识:

    集合类的由来:
            对象用于封装特有数据,对象多了需要存储,如果对象的个数不确定。
             就使用集合容器进行存储。
    集合的特点:
    1,用于存储对对象的容器。
    2,集合的长度是可变的。
    3,集合中不可以存储基本数据类型值。
    4,有些方便放入和取出,有些方便查找。
    Collection接口:
          add(Object obj);将指定的对象添加到该集合中
          remove(Object obj);将指定的对象移除该集合
          isEmpty(); 返回boolean,用于判断当前集合是否为空,如果集合中不包含元素,则返回true,否则返回false
          iterator();返回在此Collection的元素上进行迭代的迭代器,用于遍历集合中的对象
          size();返回int值,获取该集合的元素个数
          clear();移除该集合的所有对象,清空该集合。
          contains(Object obj);用来查看该集合中是否存在指定的对象,返回值为boolean类型,如果存在则返回true,否则返回false
      removeAll(Collection coll)方法:
                      该方法用来从该集合中移除同时包含在指定参数集合中的对象。如果集合中包含符合条件的对象则返回true,否则返回false
      containsAll(Collection coll):与removeAll(Collection coll)相反
    5,获取:
      int size();
      Iterator iterator():取出元素的方式:迭代器
          该对象必须依赖于具体容器,因为每一个容器的数据结构都不同。
          所以该迭代器对象是在容器中进行内部实现的
          对于使用容器者而言,具体的实现不重要,只要通过容器获取到该实现的迭代器的对象即可,
          也就是iterator方法。
      Iterator接口就是对所有的Collectionon容器进行元素取出的公共接口。
     
    Collecton
     |--List:有序(存入和取出的顺序一致),元素都有索引,元素就可以重复
     |--Set:元素不能重复,无序。
     List:特有的常见方法,有一个共性特点就是都可以操作角标
     
     List的常用子类
      |--Vector:内部是数组数据结构,是同步的
      |--ArrayList:内部是数组数据结构,不同步,效率高,替代Vector,查询速度快
      |--LinkedList:内部是链式数据结构,不同步的,增删元素速度快

    Set:元素不可以重复,无序
       其中的方法和Collection一致
       HashSet:内部数据数据结构是哈希表,是不同步的。
        如何保证该集合的元素唯一性呢?
        是通过对象的hashCode和equals方法来完成对象的唯一性的。
        如果对象的hashCode值不同,那么不用判断equals方法,就直接存储到哈希表中。
        如果对象的hashCode值相同,那么要再次判断对象的equals方法是否为true。
        如果为true,视为相同元素,不存,如果为false,那么视为不同元素,就进行存储。
        记住:如果元素要存储到HashSet集合中,必须覆盖hashCode方法和equals方法。
        一般情况下,如果定义的类会产生很多对象,比如人,学生,书,通常都需要覆盖equals,hashCode方法。
        建立对象判断是否相同的依据。
          
     |--TreeSet:可以对Set集合中的元素进行排序。是不同步的
                   判断元素的唯一性的方式:就是根据比较方法的返回结果是否是0,是0,就是相同元素,不存。
            
      TreeSet对元素进行排序的方式一:
               让元素自身剧本比较功能,晕啊素需要实现Comprable接口,覆盖comparaTo方法。
               如果不要按照对象中具备的自然顺序进行排序,或者对象不具备自然顺序,怎么办?
               可以使用TreeSet集合第二种排序方式二:
               让集合自身具备比较功能,定义一个类实现Comparator接口,覆盖compare方法。
               将该类对象作为参数传递给TreeSet集合的构造函数。
               ====================================
    Map:一次添加一对元素。 Collection 一次添加一个元素
        Map也称双列集合,Collection集合称为单列集合
                其实map集合中存储的就是键值对
        map集合中必须保证键的唯一性
        常用方法:
        put(k key,v value); 返回前一个和key关联的值,如果没有,返回null;
        clear();清空map集合。
        remove(key);根据指定的key翻出这个键值对。
        containsKey(key);
        containValue(value);
        isEmpty();
        get(key);通过键获取值,如果没有改建返回null;
                                        可以通过返回null,来判断是否包含指定键。
        size();获取键值对的个数。
               
          取出map所有的元素。
          方式一:
               原理:同过keySet方法获取map中所有的键所在的Set集合,在通过Set的迭代器获取到每一个键,
               在通过map集合的get方法获取每一个键对应的值。
               例如:Set<Integer> keySet=map.keySet();
            Iterator it=keySet.iterator();
            while(it.hasNext()){
                Integer key= (Integer) it.next();
                String value=map.get(key);
                System.out.println(key+" "+value);
                }
        方式二:
         通过Map转成set就可以迭代。
         找到了另一个方法,entrySet
         该方法将键和值的映射关系作为对象存储到了Set集合中,而这个映射关系的类型就是Map、Entry类型
            
        Set<Map.Entry<Integer, String>> entrySet=map.entrySet();
        Iterator<Map.Entry<Integer, String>> it2=entrySet.iterator();
        while(it2.hasNext()){
            Map.Entry<Integer, String> me=it2.next();
            Integer key=me.getKey();
            String value=me.getValue();
            System.out.println(key+" "+value);
        }
    Map常用的子类:
        |--Hashtable:内部结构是哈希表,是同步的。不允许null作为键,bull作为值。
               |--Properties:用来存储键值对型的配置文件的信息,可以和IO技术相结合。
        |--HashMap:内部结构是哈希表,不是同步的,允许null作为键,null作为值。
        |--TreeMap:内部结构是二叉树,不是同步的,可以对Map集合中的键进行排序。

  • 相关阅读:
    Linux中split大文件分割和cat合并文件
    linux 之oracle静默安装
    linux查看文件的编码格式的方法 set fileencoding
    cat file | while read line的问题
    LINUX增加SWAP分区---install_oracle
    分布式系统---负载均衡、同步
    oracle常用命令
    Oracle中三种循环(For、While、Loop)
    PRD产品需求文档
    App界面交互设计规范
  • 原文地址:https://www.cnblogs.com/lzzhuany/p/4515120.html
Copyright © 2011-2022 走看看