zoukankan      html  css  js  c++  java
  • Java之容器

        容器
    Collection接口定义了存取一组对象的方法,其子接口Set和List分别定义了存储方式
        ·Set中的数据对象没有顺序且不可以重复    HashSet
        ·List中的数据对象有顺序且可以重复        LinkedList(底层为链表)  ArrayList(底层为数组)
            
    ·Array读快改慢
    ·Linked改快读慢
    ·Hash两者之间

    Map接口定义了存储“键(key) - 值(value)映射对”的方法    HashMap

    ①Collection接口中所定义的方法
        int size()
        boolean isEmpty()
        void clear()
        boolean contains(object element)    //是否包含了element元素
        boolean add(object element)
        boolean remove(object element)
        Iterator iterator();
        boolean containsAll(Collection c)    //是否包含了集合c里面的所有元素
        boolean addAll(Collection c)        
        boolean removeAll(Collection c)        //移除有集合c里面的所有元素
        boolean retainAll(Collection c)        //跟另一个集合的交集
        Object[] toArray()

    ②Iterator接口        为了统一遍历Collection中方法,
        ·所有实现了Collection接口的容器类都有一个iterator方法用以返回一个实现了Iterator接口的对象
        ·Iterator对象称作迭代器,用以方便的实现对容器内元素的遍历操作
        ·Iterator接口定义了如下方法
            ·boolean hasNext()    //判断游标右边是否有元素
            ·object next()        //返回游标右边的元素并将游标移动到下一个位置
            ·void remove()        //删除游标左面的元素,在执行完next之后该操作只执行一次
    补充:增强的for循环  
        缺陷:
            ·数组:不能方便的访问下标值
            ·集合:与使用iterator相比,不能方便的删除集合中的内容
        总结:除了简单遍历并读出其中的内容
        int[] arr = {1,2,3,4,5};
        for(int i : arr){
            System.out.println(i);
        }

        Collection c = new ArrayList();
        c.add();
        c.add();
        c.add();
        for(Object o : c){
            System.out.println(o);
        }


    ③Set接口
        ·Collection的子接口,Set接口没有提供额外的方法,但实现Set接口的容器类中的元素是没有顺序的,而且不可以重复
        ·Set容器可以与数学中“集合”的概念相对应
        ·J2sDK API中所提供的Set容器类有HashSet,TreeSet等

    ④List接口
        ·List接口是Collection的子接口,实现List接口的容器类中的元素是有顺序的,能重复的
        ·List容器中的元素都对应一个整数型的序号记载其在容器中的位置,可以根据序号存取容器中的元素
        ·J2SDK 所提供的List容器类有ArrayList,LinkedList等。
            List容器常用算法
                ·void sort(List) 对List容器内的元素排序
                ·void shuffle(List) 对List容器内的对象进行随机排序
                ·void reverse(List) 对List容器内的对象进行逆序排列
                ·void fil(List, object) 用一个特定的对象重写整个List容器
                ·coid copy(List dest, List src) 将src List容器内容拷贝到dest List容器
                ·int binarySearch(List,object) 对于顺序的List容器,采用折半查找的方法查找特定对象

    ⑤comparable接口
        ·所有可以“排序”的类都实现了此方法,
        ·只有一个方法public int compareTo(object obj);
            返回0 表示 this == obj
            返回正数 表示 this > obj
            返回负数 表示 this < obj

    ⑥Map接口    
        ·实现Map接口的类用来存储键 -值 对
        ·Map接口的实现类有HashMap 和 TreeMap 等
        ·Map类中存储的键 - 值对通过键来标识,所以键值不能重复
            Object put(Object key, Object value)
            Object get(Object key)
            Object remove(Object key)
            boolean containsKey(Object key)
            boolean containsValue(Object value)
            int size()
            boolean isEmpty()
            void putAll(Map t)
            void clear()

    自动打包 Auto-boxing/unboxing
        ·在核实的时机自动打包、解包
        ·自动将对象转换为基础类型



    泛型Generic
    起因:
        ·JDK1.4以前类型不明确:
            ·装入集合的类型都被当作Object对待,从而失去自己的实际类型
            ·从集合中取出时往往需要转型,效率低,容易产生错误
    解决办法
        ·在定义集合的时候同时定义集合中对象的类型
        ·实例:
            ·可以再定义Collection的时候指定
            ·也可以在循环时用Iterator指定
        List<String> c = arrayList<String>();
        Iterator<String> it = c2.iterator();
        
        
    好处
        ·增强程序的可读性和稳定性


    补充:Object是所有类的父类,其中的一些方法
        toString()方法
        ·public String toString() 描述当前对象的有关信息
        ·在进行String与其它类型数据的连接操作时,(如:System.out.println("info" + person))将自动调用该对象类的toString()方法
        ·可以根据需要在用户自定义类型中重写toString()方法

        hashCode()方法
        哈希码

        equals()方法 相当于“==” 所以大多数类中重写了equals()方法
        public boolean equals(Object obj)

        比较对象是否相等,重写
        public boolean equals(Object obj){
            if(obj == null) return false;
            else{
                if(obj instanceof class){    //class类,判断obj是否属于class类
                    Class c = (class)obj;
                    if(c.color == this.color && ...){   //所有属性都相同
                        return true;
                    }
                }

            }
        }



    总结:1136
        ·一个图
            Collection                Map
            /                     |
             set    list                  hashMap
             /        /  
           hashSet arrayList  linkedList            
        ·一个类
            ·Collections
        ·三个知识点
            ·for
            ·Generic(泛型)
            ·Auto-boxing/unboxing
        ·六个接口
            ·colleciton
            ·set
            ·list
            ·map
            ·Iterator
            ·comparable

  • 相关阅读:
    CSS优化,提高性能的方法有哪些?
    稀疏数组(SparseArray)(Go)
    Go
    Vue 实战-6 rest 重置表单不生效原因
    Go
    Vue 实战-5 批量导出 excel功能
    Vue 实战-4 表格展开行
    Vue 实战-3 vue 中使用watch 监听 el-input属性值
    Vue 实战-2 输入框加搜索图标
    Vue 实战-1 去掉 input [number] 默认增减箭头样式
  • 原文地址:https://www.cnblogs.com/whgk/p/5326573.html
Copyright © 2011-2022 走看看