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

    集合比数组的优势:

       1.集合可以存任意类型的变量,长度是可变的

       2.数组只能存同一类型的变量,长度是固定的

       3.集合中只能存对象

    List集合 : 接口  提供公有的方法

       特有的方法:

        1.List中特有的方法都是通过下标来操作元素的

        查找:

           add(int index,Object 0)添加元素到指定的位置

           get(int index),获取集合中指定位置的元素

           Set(int index,object o),用来修饰集合中指定位置的元素的值

    迭代器:

         作用:操作集合中的元素,可以(增 , 删 ,改 ,查)

    根迭代器:Iterator   接口  集中获取迭代器 :  通过集合中的方法获取迭代器

                  collection 集合中获取迭代器:Iterator();

    迭代器中的方法:

        hasNext();//判断当前指针指向的位置是否有元素

        next();     //获取当前指针指向的元素,并且指针下移一位

        remove(); //移除最后操作是指针指向的元素

     ListIterator: 中的特有方法:

           hasPrpvious();判断当前指针指向的上一个位置是否存在元素

           provious();     获取上一个元素

           proviousIndex();获取上一个元素所在的位置

           add();在当前指针指向的位置添加一个元素

           set();修改当前指针指向的元素

          1.add和set不能同事使用

          2.如果使用迭代器操作元素,那么就不要用集合来操作元素

    ArratList  : 底层是维护一个Object[] 数组,默认的容量是10,如果容量不够,增加为原来的1.5倍,

                      优点:查找块 ,增删慢

       trimToSize()。调整集合的容量和数据保持一致

       ensureCapacity(int minCapacity)自定义容量

    LinkedList :连接列表实现, 特点:添加元素比较快。查找慢

    LinkedList特有的方法:

       方法介绍: 

         addFirst(E e)

          addLast()

          getLast()

          removeFirst()

          removeLast()

    如果集合中没有元素,获取或者删除元素抛:NoSuchElementException:没有找到元素的异常

       数据结构:

    第一个方法  :  List.push(“***”) //往集合的堆栈中推入一个值

             System.out.println("从集合中堆栈中取出值:"+list.pop());  // 狗娃   移除push进去的对象   pop()取栈中最上面的对象

    先进先出:

          list.offer(“狗娃”);

          System.out.printn(list.poll());  // 会将元素从集合中移除

    获取逆序的迭代器

         descendingIterator()
              返回以逆向顺序在此双端队列的元素上进行迭代的迭代器。

         eg:   Iterator it= list.descendingIterator()

                  while(it.hasNext){

                 System.out.println(it);    反着打印出来

                 }

    Vector : 描述的是一个线程安全的ArrayList 使用和ArrayList一样   (只需了解)

          vector 和 ArrayList 区别

           相同点:   底层都是用object数组来实现的 

           不同点: 

              1.ArrarList是线程不同步,操作效率高,  ArrayList是在jdk1.2出现的

              2.Vector 线程是同步,操作效率低,  是在jdk1.0时候出现的

    Set集合:也是一个接口,继承collection接口,元素是无序的,不能用索引值来取值,不能 重复

    hashSet 存值得一个原理:

      首先会调用对象的hashCode方法获取hashCode值,通过移位等运算获取一个位置

      情况1:如果位置上是没有元素,直接将元素存放在该位置上

      情况2:如果位置上已经有了元素,用对象的equals方法和位置上已经存在的对象比较,如果equals返回的是true那就代表是重复对象,就不存在,如果返回的是false将对象和原有的对象存在一起

    想要遍历Set集合:1.将集合变为数组,2.通过迭代器来遍历(无序:添加的顺序和打印出来的顺序是不一样的、)

    Treeset:使用元素的自热顺序对元素进行排序,底层使用二叉树来实现

    Treeset使用注意点:

          1.往TreeSet添加对象的时候,如果对象有这个自然排序的特性,就按照这个自然排序进行排序

          2.往TreeSet添加对象的时候,如过对象本身不具备自然排序的特性,运行的时候回报错,如果需要存储对象,那么的对象的类必须要实现CompareTo接口  把元素的比较的规格定义在CompareTo方法中

          3.往TreeSet添加对象的时候,如果对象本身不具备自然排序的特性,并且没有实现Comparable 接口,那么这个时候需要创建一个TreeSet的时候传入一个比较器

            比较器的定义方式:

                class 类名  inplements  Compartor{

                  

                 }

            4.如果类中实现了Comparable 接口,又在创建Treeset时传入一个比较器,这个时候以比较器为标准。

  • 相关阅读:
    函数响应式编程及ReactiveObjC学习笔记 (-)
    Flask的第一个应用
    Django错误 OperationalError: no such column: xxx
    Python高级数据类型模块collections
    wsgiref 源码解析
    WSGI文档(中文版)
    Python:树的遍历
    Django+haystack实现全文搜索出现错误 ImportError: cannot import name signals
    Django+Celery+Redis实现异步任务(发送邮件)
    Python面向对象—类的继承
  • 原文地址:https://www.cnblogs.com/2016yjl/p/6114827.html
Copyright © 2011-2022 走看看