其他分享
首页 > 其他分享> > Day03 数据结构、List集合、Set接口、Collections

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

作者:互联网

数据结构

队列

数组

链表

红黑树

红黑树的特点:

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

List集合

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

介绍

常用方法

List的子类

ArrayList集合

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

LinkedList集合

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

常用方法

Set接口

HashSet集合介绍

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

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

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

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

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

HashSet存储自定义类型元素

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

LinkedHashSet

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

可变参数

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

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

Collections

常用功能

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