软件设计之Java入门视频(17)

软件设计之Java入门视频(17)

视频教程来自B站尚硅谷:

尚硅谷Java入门视频教程,宋红康java基础视频
相关文件资料(百度网盘)
提取密码:8op3
idea 下载可以关注 软件管家 公众号

学习内容:

该视频共分为1-717部分
本次内容涉及 510-539
在写代码时,总是需要来回切换界面来看代码要求,这里推荐Snipaste,可以把截图以窗口形式放在屏幕上
记录内容:

  1. 集合框架
  2. Collection接口
  3. Set接口

1、集合框架

1)集合、数组都是对多个数据进行存储操作的结构,简称ava容器。说明:此时的存储,主要指的是内存层面的存储,不涉及到持久化的存储(.jpg.txt等)
2)数组在存储多个教据方面的特点:
一旦初始化以后,其长度就确定了
数组一旦定义好,其元素的类型也就确定了,只能操作指定类型的数据
3)数组在存储多个数据方面的缺点:
一旦初始化以后,其长度就不可修改
数组中提供的方法非常有限,对于添加、删除、插入数据等操作,非常不便
获取数组中实际元素的个数的需求,数组没有现成的属性或方法可用
数组存储数据的特点:有序、可重复,对于无序、不可重复的需求,不能满足

在这里插入图片描述

2、Collection接口

Collection常用方法

public class CollectionTest {

    @Test
    public void test1(){
        Collection coll = new ArrayList();
        //add(Object e):将元素e添加到集合coll
        coll.add("AA");
        coll.add(123); //基本数据类型--> Integer自动装箱
        coll.add(new Date());
        //size():
        System.out.println(coll.size());//3
        //addAll(Collection coll1):将coll1集合中的元素添加到当前的集合中
        Collection coll1 = new ArrayList();
        coll1.add("345");
        coll.addAll(coll1);
        System.out.println(coll.size());//4

        //iterator遍历Collection
        Iterator iterator = coll.iterator();
        while (iterator.hasNext()){
            System.out.println(iterator.next());
        }
        //for循环变量Collection
        //for(集合元素的类型 局部变量 :集合对象)
        for (Object obj : coll){
            System.out.println(obj);
        }
    }
}

ArrayList&LinkedList&Vector

在这里插入图片描述

List常用方法

public class ListTest {

    @Test
    public void test1(){
        ArrayList list = new ArrayList();
        list.add(123);
        list.add("AA");

        //void add(int index , Object ele)在指定位置插入ele元素
        list.add(1,"CC");
        System.out.println(list);//[123, CC, AA]
        //int indexOf(Object obj)返回obj在集合中首次出现的位置,没有返回-1
        int index = list.indexOf(123);
        System.out.println(index);//0
        //int lastIndexOf(Object obj)返回obj在集合中末次(最后一次)出现的位置,没有返回-1
        list.add(123);
        int j = list.lastIndexOf(123);
        System.out.println(j);//3
        //List subList(int fromIndex,int toIndex)返回从fromIndex到toIndex左闭右开区间子集和
        List list1 = list.subList(0, 2);
        System.out.println(list1);//[123, CC]

    }

3、Set接口

在这里插入图片描述

1)Set无序性:不等于随机性,存储的数据在底层数组中并非按照数组索引的顺序添加,而是根据数据的哈希值决定
2)保证添加的元素按照equals()判断时,不能返回true 即:相同的元素只能添加一个
3)添加元素的过程:以HashSet为例
4)Set接口没有额外定义新的方法,使用的都是Collection中声明过的方法
5)要求:向Set中添加的数据,其所在的类一定要重写hashCode()和equals()方法
在这里插入图片描述

LinkedHashSet

LinkedHashSet作为HashSet的子类,在添加数据的同时,每个数据还维护了两个引用,记录此数据前一个数据和后一个数据
优点:对于频繁的遍历操作,LinkedHashSet效率高于HashSet

TreeSet

1)向TreeSet中添加数据,要求是相同类的对象
2)两种排序:自然排序,定制排序
自然排序中,比较两个对象是否相同的标准为:compaerTo()返回0,不再是equals()
定制排序中,比较两个对象是否相同的标准为:compare()返回0不再是equals()

  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值