集合体系结构-1

本文详细介绍了Java中`throws`和`throw`的区别,`throws`用于方法声明,表示异常可能抛出,而`throw`在方法体内,表示实际抛出异常。接着深入探讨了集合体系结构,包括Collection、List集合及其子类ArrayList和LinkedList的特点,强调了ListIterator在遍历List集合时的重要作用。此外,还讨论了Set集合,特别是HashSet的特性,如无序性和不允许重复元素。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

throws和throw的区别

throws:
  • 用在方法声明后,跟的是异常类名
  • 表示抛出异常,由该方法的调用者来处理
  • 表示出现异常的一种可能性,并不一定会出现异常
throw:
  • 用在方法体内,跟的是异常对象名
  • 表示抛出异常,由方法体内的语句处理
  • 执行throw一定是抛出了某种异常

集合体系结构

集合类:提供一种存储空间可变的存储模型,存储的数据容量可以随时改变

集合的整个结构集合的整个结构


Collection

创建:


        //创建集合对象,里面的元素是String类型的
        Collection<String> c = new ArrayList<>();
        
        //添加元素 boolean add(E e)
        c.add("hello");
        c.add("world");

        System.out.println(c);

几种基本方法:

        Collection<String> c = new ArrayList<>();

        c.add("hello");
        c.add("world");//在集合中添加元素

        System.out.println(c);

        c.remove("world");//移除集合中的某个元素

        System.out.println(c);

        c.clear();//清空集合中的元素
        System.out.println(c);
      
        System.out.println(c.contains("hello"));//判断集合中是否存在该元素
        System.out.println(c.isEmpty());//判断集合是否为空
        System.out.println(c.size());//集合的长度,也就是集合中元素的个数

iterator :迭代器 集合的专用遍历方式
使用迭代器遍历不能修改集合元素否则会导致并发修改异常。

List集合:

  • 有序集合,用户可以精准控制列表中每个元素插入的位置。用户可以通过整数索引访问元素。

  • 与Set集合不同,列表通常允许重复的元素。

  • 有序:存储和取出元素顺序一致。

  • 可重复:存储的元素可以重复。

		List<String> list = new ArrayList<String>();
		
        list.add(1,"good");//在此集合中的指定位置插入指定的元素
        list.remove(2); //删除指定索引处的元素,返回被删除的元素
        list.set(0,"new");//修改指定索引处的元素,返回被修改的元素
        System.out.println(list.get(1));//返回指定索引处的元素
        

ListIterator:列表迭代器

  • 通过List集合的listIterator()方法得到,所以说它是List集合特有的迭代器
  • 用于允许程序员沿任一方向遍历列表的列表迭代器,在迭代期间修改列表并获取列表中迭代器当前的位置。

ListInterator中的常用方法:

  • E next():返回迭代中的下一个元素
  • boolean hasNext():如果迭代具有更多元素,返回true。
  • E previous():返回列表中的上一个元素。
  • boolean hasPrevious():如果此列表迭代器在相反方向遍历列表时具有更多元素,则返回True。
  • void add(E e):将指定的元素插入列表。

List集合子类:

ArrayList:底层数据结构是数组,查询快,增删慢
LinkedList:底层数据结构是链表,查询慢,增删块

代码尽量依赖于抽象,不依赖于具体,这样代码可以方便替换,可以快速转变为LinkedList之类的

        //创建集合对象
        LinkedList<String> linkedList = new LinkedList<>();
		
		//通过当前类为引用类型,ArrayList 实现了List接口,除了要必须实现	 接口List中声明的方法外,还可以实现额外的一些方法
		ArrayList<String> list = new ArrayList<>();
		
		//通接口为引用类型,ArrayList 实现了List接口
    	List<String> list1 = new ArrayList<>();

        linkedList.add("hello");
        linkedList.add("world");
        linkedList.add("java");

        linkedList.addFirst("javase");//在链表开头插入指定元素
        linkedList.addLast("javaee");//在链表结尾插入指定元素

        String s1 = linkedList.getFirst(); //返回第一个元素
        System.out.println(s1);

Set集合

  • 不包含重复元素的集合
  • 没有带索引的方法,不能使用普通的for循环遍历

哈希值

  • JDK根据对象的地址或者字符串或者数字计算出来的int类型的数值。

默认情况下不同对象的哈希值是不同的,通过方法重写可以实现不同对象的哈希值相同。

        Student s1 = new Student("马小跳", 15);

        //同一个对象多次调用返回的哈希值是相同的
        System.out.println(s1.hashCode());
        System.out.println(s1.hashCode());
HashSet
  • 对集合的迭代顺序不做保证,不保证存储和取出的元素顺序一致
  • 底层数据机构是哈希表
  • 没有带索引的方法,不能使用普通for循环遍历
  • 由于是Set集合,所以是不包含重复元素的集合
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值