栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

集合的特性和遍历

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

集合的特性和遍历

集合概述
集合和数组的差别
相同点:
都是容器,可以存储多个数据
不同点:
1.数组的长度是不可变的,集合的长度是可变的
2.数组可以存基本数据类型和引用数据类型
3.集合只能存引用数据类型,如果要存基本数据类型,需要存对应的包装类

**集合体系结构

Collection集合

Collection集合概述
1.是单列集合的顶层接口。它表示一组对象,这些对象也称为Collection的元素
2.JDK不提供此接口的任何实现,它提供更具体的子接口(如Set和List)实现
创建Collection集合的对象
1.多态的方式
2,.具体的实现类ArrayList
Collection常见的成员方法

迭代器的使用

迭代器介绍
1.迭代器,集合的专用遍历方式
2.Iterator iterator():返回此集合元素的迭代器,通过集合对象的Iterator()方法得到,默认指向当前集合的0索引
Iterator中的常用方法

  1. boolean hasNext():判断当前位置是否有元素可以被取出
  2. E next():获取当前位置的元素,将迭代器对象移向下一个索引位置
```java
Collection saozi = new ArrayList<>();
saozi.add("李小璐");
saozi.add("马蓉");
saozi.add("董洁");
saozi.add("孙一宁");
//遍历集合,打印嫂子
//1.获取迭代器对象,根据集合对象去获取,不是new
Iterator iterator = saozi.iterator();
//为什么要根据集合对象获取迭代器对象呢?
//因为这样的话,集合中的数据就直接交给了这个迭代器
//如果是直接new的话,它和集合的数据有半毛钱关系?
​
//2.开始遍历集合,如果集合中已经没有数据了,迭代器获取数据会报错
//不知道遍历几次,所以使用while循环,循环的条件就是集合中要有数据
while (iterator.hasNext()) {
   //3.集合中有数据,开始使用迭代器获取
   String str = iterator.next();
   System.out.println(str);
}
//这种使用hasNext和next结合获取数据的语法习惯,不仅仅是迭代器独有的
//这种语法应用也会在以后学习的数据库中jdbc的内容出现
//根据这种语法习惯,到时候可以直接推理出jdbc方式获取数据的相关api

增强for:基本格式
介绍:
1.它是JDK5之后出现的饿,其内部原理是一个Iterator迭代器
2.实现Iterable接口的类才可以使用迭代器和增强for
3.简化数组和Collection集合的遍历
格式
for(集合/数组中元素的数据类型 变量名 : 集合/数组名) {
// 已经将当前遍历到的元素封装到变量中了,直接使用变量即可
}

public class MyCollectonDemo1 {
    public static void main(String[] args) {
        ArrayList list =  new ArrayList<>();
        list.add("a");
        list.add("b");
        list.add("c");
        list.add("d");
        list.add("e");
        list.add("f");

        //1,数据类型一定是集合或者数组中元素的类型
        //2,str仅仅是一个变量名而已,在循环的过程中,依次表示集合或者数组中的每一个元素
        //3,list就是要遍历的集合或者数组
        for(String str : list){
            //优势就是,当你需要遍历集合的时候,你就不用在考虑范围的事情,也不用考虑条件的事情
            System.out.println(str);
        }
    }
}

增强for:注意点
1.如果需要操作索引,使用普通for循环
2.如果在遍历的过程中需要删除元素,请使用迭代器
3.如果只是想遍历,那么使用增强for

List集合

list集合概述
1.有序集合,这里的有序指的是存取顺序
2.用户可以精确控制列表中每个元素的插入位置,用户可以通过整数索引访问元素,并搜索列表中的元素
3.与Set集合不同,列表通常允许重复的元素
List集合的特点
1.存取有序
2.可以重复
3.有索引
特有方法

public class Test {
    public static void main(String[] args) {
        //1.准备素材
        List list = new ArrayList<>();
        list.add("a");
        list.add("b");
        list.add("c");
        list.add("d");
        //2.验证它的特有方法,先验证add(添加的位置,添加的元素)
        list.add(0,"我真帅");
        System.out.println(list);
        //3.remove
        list.remove(1);
        System.out.println(list);
        //4.add方法没有改变其他元素,但是set方法会改变对应索引的元素,将其覆盖
        list.set(2, "我真特么帅");
        System.out.println(list);
    }
}
List集合的实现类

1.ArrayList:底层数据结构是数组,查询快,增删慢
2.使用空参构造创建的集合,没有添加数据之前,集合和内部数组的长度都是0
3.添加了一个数据之后,集合的长度是1,但是内部数组的长度是10

List list = new ArrayList<>();

list.add("a");
LinkedList:基本运用

1.LinkedList:底层是链表结构的实现,查询慢,增删快

练习:使用LinkedList完成存储字符串并遍历
LinkedList ll = new LinkedList<>();
ll.add("李小璐");
ll.add("马蓉");
ll.add("董洁");
ll.add("潘金莲");
//遍历集合:普通for
for (int i = 0; i < ll.size(); i++) {
    System.out.println(ll.get(i));
}
System.out.println("====================");
//迭代器
Iterator it = ll.iterator();
while (it.hasNext()) {
    System.out.println(it.next());
}

System.out.println("====================");
for (String s : ll) {
    System.out.println(s);
}

LinkedList:特有功能

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1000110.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号