zoukankan      html  css  js  c++  java
  • 202012.03,set集合,LinkedList集合,可变参数列表,Collections集合工具类

    linkedList集合:java.util
    lingedList类
    是一种链表结构,增删快,查询慢,【linkedList是双向列表结构,所以有序】,内部大量封装对首节点和尾节点的操作。
    |
    方法

    • public void addFirst(E e);将指定元素加到首节点位置。
    • public void addLast(E e);将指定元素插入得到尾节点
    • public E getFirst();获取首节点元素
    • public E getLast();获取尾节点元素
    • public E removeFirst();删除首节点元素
    • public E removeLast();删除尾节点元素
    • public E pop();从此列表所表示的堆栈中弹出一个元素
    • public E push(E e);将元素插入到此列表所表示的堆栈中
    • public boolean isEmpty();如果不包含任何元素则返回true
      |
      特点
      1.底层是链表结构,增删快,查找慢
      2.含有大量首尾节点的方法
      3.云讯包含所有元素,包括null
      4.实现不是同步的,如果多个线程一起访问同一个链表,而其中至少一个线程结构上修改链表,那么至少保持外部同步。
      |||||||||||||||||||
      |||||||||||||||||||
      |||||||||||||||||||
      Set接口:HashSet和LinkedSet
      1.继承自Collection接口,与Collection接口中方法基本一摸一样哦,只是比Collectiong接口更加严格,
      2与List接口不同的是Set接口元素是无序的,并且不会重复
      3.Set接口没有带索引得方法,不能使用普通佛如循环进行遍历
      |
      HashSet集合:java.util包
      1.不允许重复性元素
      2.没有带索引得方法,不能使用普通佛如循环进行遍历
      3.无序无序哈
      4.底层是一个哈希表结构:java.util.Map来实现的
      |
      优点
      根据对象的哈希值来确定集合当中的存储位置,一此它具有良好的存取和查找性能。【并且保证元素唯一性,依赖于hashCode和equals方法。】所以,即使内存地址不一样,但是内容一样,也是不能存进去得。
      |
      哈希地址值
      1.十进制整数,jvm虚拟机给出,模拟地址(逻辑地址),不是数据真实存在的物理地址,逻辑地址只是为了让我们更容易调用。哈希值是由Object中的hashCode()方法,得到对象的哈希码值。
      |
      哈希表
      HashSet集合,存储数据结构:哈希表
      JDK1.8之前:哈希表=数组+链表
      JDK1.8之后:哈希表=数组+链表
      ---------- 哈希表=数组+红黑树
      如果链表结构超过了八位,那么就会把链表结构转换为红黑树结构。
      |
      存储元素到集合中步骤
      1.计算元素的哈希值(不同的元素哈希值也可能一样)
      2.把元素哈希值传入hashSet集合底层数组,元素哈希值形成链表节点随机挂在数组下面,哈希值相同的呢就就挂在相同哈希值的下面,一直往下挂,不同的呢,就换一个数组框来挂在下面。直到链表节点超过八个那就会回使用红黑树的方式进行元素存储(提高查询性能)。
      |
      往集合中加元素过程
      1.调用元素的hashCode方法和equals方法来判断元素是否重复。
      2.调用元素hashCode方法得到哈希值
      3.在集合中找有没有和该元素哈希值一样的哈希值,没有就把此元素存到集合中,如果有(哈希冲突)。那么次元素就会调用equals方法和哪个哈希值相同的元素进行比较,如果相同那么两个元素相同,就不存,不相同就存进去。
      |
      不重复
      1.保证唯一性重写Object类的hashCode和equals方法。
      |
      HashSet集合存储自定义元素
      通常需要重写HashCode和equals方法,自定义内部代码,根据自己的想法判断两个是不是相同。
      |
      LinkedHashSet集合:
      HashSet元素唯一但是,无序
      使用LinkedHashSet就能实现唯一且有序,(是HashSet的子类),他是链表和哈希表(数组+链表/红黑树)的一种组合出来的。Hashset只有哈希表,多出来的链表就是为了保证有序的。
      |
      可变参数列表
      出现时间:JDK1.5之后,我们定义一个方法需要接受多个参数,并且多个参数的数据类型一直,格式简化如下:
      修饰符 返回值类型 方法名(参数类型... 形参名){}
      同样是代表数组,但是在方法调用的时候,这个可变参数可以直接传数据。不用创建数组。本质就是封装到数组进行操作
      |
      使用条件:
      1.参数数据类型一致并确定,但是参数个数不确定,就使用可变参数,传0个都可以。
      2.可变参数得底层是定义了一个数组,根据传递参数个数不同创建不同长度的【数组】。来存储这些参数。
      注意
      1.一个方法参数列表只能有一个可变参数
      2.如果有不要一样的,那么就要把可变参数写在末尾
      public void method(String a,int[] b,double... c){}
      |
      Collections集合工具类:直接操作集合中的元素
      1.public static boolean addAll(Collection c,T... elements );往集合中一此加入多个元素 2.public static void shuffle(list list);打乱集合中元素顺序
      3.public static void sort(List list);对集合进行排序
      4.public static void sort(List list,Comperator<? super T>);自己控制升序还是降序的排序
  • 相关阅读:
    流程数据库的归档
    [转载]利用老毛桃WinPE制作启动U盘安装系统
    [转载]分享日志 Word,PDF,PPT,TXT之间的转换方法
    编程书籍推荐(转)
    ArcGIS教程下载 系列 ArcMap教程下载 ArcCatlog 教程下载 等的学习资料下载 (google文档 可以直接查看 也可以下载)
    JDK 1.6 下载 地址
    (转)MapXtreme for Java 精华文章
    Java2D Tutorial(方便自己找)
    JFC:Java
    转自百度百科《OpenGL》
  • 原文地址:https://www.cnblogs.com/tushao/p/14082476.html
Copyright © 2011-2022 走看看