ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Day03 数据结构、List集合、Set接口、Collections

2021-02-25 11:02:17  阅读:173  来源: 互联网

标签:Set Day03 void 元素 List list01 集合 public


数据结构

  • 栈:stack,又称堆栈,它是运算受限的线性表,仅允许在一端进行插入和删除
  • 先进后出
  • 栈的入口、出口都是栈的顶端位置
  • 压栈:存元素
  • 弹栈:取元素

队列

  • 队列:queue,简称队,也是一种运算受限的线性表,仅允许在表的一端插入,而在表的另一端删除
  • 先进先出
  • 队列的人口、出口各占一侧

数组

  • 数组:Array,是有序的元素序列,数组是在内存中开辟一段连续的空间,并在此空间释放元素
  • 查找元素块
  • 增删元素慢

链表

  • 链表:linked list,由一系列结点node组成,结点可以在运行时动态生成;结点包括两部分:一部分是存储数据元素的数据域,另一个是存储下一结点地址的指针域
  • 多个结点之间通过地址进行连接
  • 查找元素慢
  • 增删元素块

红黑树

  • 二叉树:binary tree,是每个结点不超过2的有序树

  • 红黑树的约束:

    1.节点可以是红色或者黑色的

    2.根节点是黑色的

    3.叶子节点(特指空节点)是黑色的

    4.每个红色节点的子节点都是黑色的

    5.任何一个节点到其每一个叶子节点的所有路径上黑色节点数相同

红黑树的特点:

​ 速度特别快,趋近平衡树,查找叶子元素最少和最多次数不多于二倍

List集合

java.util.List接口继承自Collection接口,是单列集合的一个重要分支,习惯性地会将实现了List接口的对象称为List集合

介绍

  • 特点:

    1. 它是一个元素存取有序的集合。例如,存元素的顺序是11、22、33。那么集合中,元素的存储就是按照11、22、33的顺序完成的)

    2. 它是一个带有索引的集合,通过索引就可以精确的操作集合中的元素(与数组的索引是一个道理)

    3. 集合中可以有重复的元素,通过元素的equals方法,来比较是否为重复的元素

常用方法

  • public void add(int index, E element):将指定的元素添加到该集合中的指定位置上

  • public E get(int index):返回集合中指定位置的元素

  • public E remove(int index):移除集合中指定位置的元素,返回被移除的元素

  • public E set(int index, E element):用指定的元素替换集合中指定位置的元素,并返回被替换的元素

List的子类

ArrayList集合

java.util.ArrayList集合数据存储的结构是数组结构,增删慢,查找快

LinkedList集合

java.util.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 void push(E e):将元素推入此列表所表示的堆栈

  • public boolean isEmpty:如果列表为空,则返回true

Set接口

HashSet集合介绍

java.util.HashSetSet接口的一个实现类,它所存储的元素是不可重复的,并且元素都是无序的(即存取顺序不一致)

HashSet是根据对象的哈希值来确定元素在集合中的存储位置,因此具有良好的存取和查找性能

保证元素唯一性的方式依赖于:hashCodeequals方法

HashSet集合存储数据的结构(哈希表)

JDK1.8中,哈希表存储采用数组+链表+红黑树实现,当链表长度超过阈值(8)时,将链表转换为红黑树,这样大大减少了查找时间

HashSet存储自定义类型元素

HashSet中存放自定义类型元素时,需要重写对象中的hashCode和equals方法,建立自己的比较方式,才能保证HashSet集合中的对象唯一

LinkedHashSet

java.util.LinkedHashSet是链表和哈希表组合的一个数据存储结构

可变参数

JDK1.5之后,如果我们定义一个方法需要接受多个参数,并且多个参数类型一致,我们可以对其简化成如下格式:

修饰符 返回值类型 方法名(参数类型... 形参名) {}

Collections

常用功能

  • public static <T> boolean addAll(Collection<T> c, T... elements):往集合中添加一些元素
  • public static void shuffle(List<?> list): 打乱集合顺序
  • public static <T> void sort(List<T> list): 将集合中元素按照默认规定排序
  • public static <T> void sort(List<T> list, Comparator<? super T>): 将集合中元素按照指定规则排序

Coparator比较器

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;

public class Demo01Comparator {
    public static void main(String[] args) {
        
        //声明一个ArrayList类对象并实例化为list01
        ArrayList<Student> list01 = new ArrayList<>();
        
        //在集合list01添加Student类匿名对象
        list01.add(new Student("Ashe",18));
        list01.add(new Student("Riven",21));
        list01.add(new Student("Zoe",21));
        list01.add(new Student("Timo",21));
        
        //自定义排序规则
        Collections.sort(list01, new Comparator<Student>() {
            @Override
            public int compare(Student o1, Student o2) {
                
                //根据年龄来排序,如果年龄一样则根据首字母来排序
                int result = o1.getAge() - o2.getAge();    
                if(result == 0) {
                    result = o1.getName().charAt(0) - o2.getName().charAt(0);
                }
                
                
                return result;
            };
        });
        System.out.println(list01);
    }
}

标签:Set,Day03,void,元素,List,list01,集合,public
来源: https://blog.csdn.net/a124654564/article/details/114066293

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有