集合

2018-07-24  本文已影响0人  Scalelength

概念:Java中的集合是工具类,可以存储任意数量的具有共同属性的对象

应用场景
    1.无法预测存储数据的数量
    2.同时存储具有一对一关系的数组
    3.需要进行数据的增删
    4.数据重复问题

集合框架的体系结构
    集合框架分为两类
        1.Collection(存储类的对象,是接口)
            三个子接口:                                                实现类:
                1) List:序列(内容要求有序,可以重复)             ArrayList(长度正态增长的数组)
                2) Queue:队列(内容要求有序,可以重复)        LinkedList(链表的内容)
                3) Set:集(无序,不可重复)                                  HashSet(哈希集)
        2.Map(键值对,是接口)
            实现类:HashMap(哈希表)存储以键值对形式表示的数据

List集合
    List list=new ArrayList();
    一、概述
        1.List是元素有序并且可以重复的集合,称为序列
        2.List可以精确的控制每个元素的插入位置,或删除某个位置的元素
        3.List的两个主要实现类是ArrayList和LinkedList
    二、ArrayList
        1.ArrayList底层是由数组实现的
        2.动态增长,以满足应用程序的需求
        3.在列表尾部插入或删除数据非常有效
        4.更适合查找和更新元素
        5.ArrayList中的元素可以为null
        集合在java.util.Collection.List中,使用jdk查看其方法
        使用ArrayList集合
         1.建造一个有所需信息的类并设置带参的构造方法(并调用super()方法)
         2.在主方法中实例化信息类,并调用有参构造方法
         3.然后ArrayList noticeList=new ArrayList();
         4.将实例添加到集合中 noticeList.add(Object Obj);
         5.强制转换并调用get方法((NoticeDemo)(noticeList.get(i))).getDate()

Set集合
    HashSet(哈希集)
        HashSet是Set的一个重要实现类,称为哈希集
        HashSet中的元素无序并且不可以重复
        HashSet中只允许一个null元素
        具有良好的存取和查找性能
    方法:
        contains(Object Obj);如果set包含指定元素则返回true
        add(E e);添加方法
        remove(Object Obj);移出方法
        size();返回set中的元素数
        iterator();返回在此set中的元素上进行迭代的迭代器
    遍历:
        Iterator<限制类名> it=set.iterator();泛型用来限制其类型
        while(it.hasNext()){System.out.println(it.next());}
    限制:
        读取数据时是不允许删除数据的
    重写方法:
        右键-Source-Generate String()
          重写toString方法以便于输出内容,而非地址
        右键-Source-Generate hashCode() and equals()
          重写hashCode方法不用管
          重写equals方法
             1.判断对象是否相等,相等则返回true,不用继续比较属性
             2.判断obj是否是该类的对象,如果是,则强制转换成此类对象并返回属性比较之后的结果 重写这两个方法是为了保证数据不重复
        泛型限定set中数据的类型
          Setset=new HashSet();
        重写toString方法,以便于用其输出内容,而不是地址
        @Override
        public String toString() {return "name=" + name + ", age=" + age;}
        重写hashCode方法
        @Override
        public int hashCode() {final int prime = 31;
                                            int result = 1;
                                            result = prime * result + age;
                                            result = prime * result + ((name == null) ? 0 : name.hashCode());
                                            return result;}
        重写equals方法
        @Override
        public boolean equals(Object obj) {
        //判断对象是否相等,相等则返回true,不用继续比较属性
            if (this == obj)
            return true;
        //判断obj是否是Cat类的对象,如果是,则强制转换并返回属性比较之后的结果
            if (getClass() == obj.getClass()){
                CatTest cat=(CatTest)obj;//强制转换成CatTest类型
                return cat.getName().equals(name)&&(cat.getAge()==age);}
            return false;}

Map
        概述:
                Map中的数据是以键值对(key-value)的形式存储的
                key-value以Entry类型的对象实例存在
                可以通过key值快速地查找value
                一个映射不能包含重复的键
                每个键最多只能映射到一个值
        常见类:
                HashMap
                            基于哈希表的Map接口的实现
                            允许使用null值和null键
                            key值不允许重复
                            HashMap中的Entry对象事无序排列的
                            HashMap中会key值重复时会覆盖以前的值

上一篇 下一篇

猜你喜欢

热点阅读