首页 > 其他分享 >十一、集合

十一、集合

时间:2023-05-19 18:33:09浏览次数:47  
标签:十一 元素 容器 -- Object 索引 集合

集合

集合:集合就是个容器,用来装东西

集合容器的特点

1.集合容器的长度是可以变化的
2.集合容器只能存储引用数据类型
3.一个集合容器中可以存储不同引用数据类型的数据

集合容器和数组容器的区别

1.集合容器的长度是可以变化的,数组容器一旦初始化长度就不能改变了
2.集合容器只能存储引用数据类型,数组容器既可以存储基本数据类型,也可以存储引用数据类型
3.一个集合容器中可以存储不同引用数据类型的数据,一个数组容器中只能存储同一种数据类型的数据

集合体系结构

Collection 单列集合的顶层接口
    --List 子接口
        --ArrayList  实现类 
        --LinkedList 实现类
        --Vector     实现类

    --Set  子接口
        --HashSet    实现类
        --TreeSet    实现类
        --LinkedHashSet 实现类

Map  双列集合的顶层接口
        -- HashMap 实现类
        -- TreeMap 实现类
        -- LinkedHashMap 实现类
        -- Hashtable 实现类
            -- Properties 实现类

Collection接口

常见的方法

boolean add(Object e)://添加元素
    boolean addAll(Collection c)://添加集合
    boolean remove(Object o)://删除元素
    boolean removeIf(Predicate filter)://按照条件删除元素
    void clear()://清空
    int size()://集合容器长度
    //数组长度:length
    //字符串长度:lenght()
    //集合长度:size()
    boolean contains(Object o)://判断集合容器中是否包含指定元素
    boolean isEmpty()://判断集合容器是否为空的

    Object[] toArray()://将集合容器转换成数组容器
    Iterator<E> iterator()://获取迭代器对象

Collection集合的遍历

//方式一:转数组遍历
Object[] objs = c.toArray();
for(int i = 0; i < objs.length; i++) {
    System.out.println(objs[i]);
}

//方式二:迭代器遍历
Iterator it = c.iterator();
while(it.hasNext()) {
    //在使用迭代器时不可以使用集合自带的方法对集合内容进行修改
    //否则会发生并发修改异常
    Object obj = it.next();
    System.out.println(obj);
}

//方式三:增强for循环(foreach)遍历

增强for循环的格式:
    for(数据类型 变量名(元素名) : 要遍历的容器的名字) {

        }

        for(Object obj : c) {
    System.out.println(obj);
}

//注意:增强for循环,底层使用的还是迭代器

List接口

List集合的特点
1.有序的(存入的顺序和取出的顺序是一样的)
2.元素可以重复的
3.有索引的

常见的成员方法
//和Collection是一样
void add(int index, Object element)://在指定的索引处添加元素
    Object get(int index)://获取指定索引处的元素
    Object remove(int index)://删除指定索引处的元素
    Object set(int index, Object element)://修改指定索引处的元素,返回被修改的数据
List集合的遍历
//方式一:转数组
Object[] objs = list.toArray();
for (int i = 0; i < objs.length; i++) {
    System.out.println(objs[i]);
}

//方式二:迭代器遍历
Iterator it = list.iterator();
while(it.hasNext()) {
    Object obj = it.next();
    System.out.println(obj);
}

//方式三:增强for
for(Object obj : list) {
    System.out.println(obj);
}

//方式四:普通for
for(int i = 0; i < list.size(); i++) {
    Object obj = list.get(i);
    System.out.println(obj);
}
ArrayList实现类

ArrayList集合的特点1.有序的(存入的顺序和取出的顺序是一样的)2.元素可以重复的3.有索引的
底层数据结构:数组数据结构

常见的构造方法?
public ArrayList();
常见的成员方法

和List一样的

LinkedList实现类

LinkedList集合的特点?1.有序的(存入的顺序和取出的顺序是一样的)2.元素可以重复的3.有索引的
底层数据结构:双向链表数据结构

常见的构造方法
    public LinkedList()
常见的成员方法
//和List一样的
public void addFirst(Object e)://将元素添加到第一个位置
    public void addLast(Object e)://将元素添加到最后一个位置
    public Object getFirst()://获取第一个位置的元素
    public Object getLast()://获取最后一个位置的元素
    public Object removeFirst()://删除第一个位置的元素
    public Object removeLast()://删除最后一个位置的元素

Set接口

Set集合的特点
1.不保证顺序(存入的顺序和取出的顺序是不一样的)
2.元素唯一
3.无索引
常见的成员方法:和Collection中的方法是一样

TreeSet实现类

TreeSet集合的特点
1.不保证顺序(存入的顺序和取出的顺序是不一样的)
2.元素唯一
3.无索引
4.可以排序的(由小到大)
TreeSet的数据结构:树型结构中红黑树
常见的成员方法:和Set中的方法是一样

存储自定义对象

如果我们想要使用TreeSet来存储自定义对象的话,要满足两个条件之一才可以正常运行条件一:自然排序Comparable条件二:比较器Comparator

实现自然排序
1.自定义类,实现Comparable接口
2.重写抽象方法compareTo()
3.在compareTo()方法中写比较规
    返回值为0:集合中的元素只有一个
    返回值为正数:集合中的元素是正序
    返回值为负数:集合中的元素是倒数
实现比较器
1.自定义类
2.创建TreeSet集合对象,在构造方法中传递Comparator的对象
3.重写compare()方法
4.在compare()中写比较规则
    返回值为0:集合中的元素只有一个
    返回值为正数:集合中的元素是正序
    返回值为负数:集合中的元素是倒数
HashSet实现类

特点:1.无序的2.元素唯一的3.无索引
数据结构:哈希表
常见的方法:和Set方法是一样的

LinkedHashSet实现类

特点:
1.有序的
2.元素唯一的
3.无索引

MAP接口

特点:
1.无序的
2.无索引
3.元素唯一的 键唯一 值可以重复
4.双列的

常见的方法

V put(K key,V value):
    //1.添加元素
    //2.修改,返回被修改前的值s
    V remove(Object key)://根据键来删除元素,返回被删除的元素的值
    int size()://获取集合容器的长度
    void clear()://清空
    V get(Object key)://根据键获取值
    boolean containsKey(Object key)://判断是否包含指定的键的元素
    boolean containsValue(Object value)://判断是否包含指定的值的元素
    Set<K> keySet()://将map集合中的所有的键获取到,扔到Set集合中
    Collection<V> values()://将map集合中的所有的值后去到,扔到Collection集合
    Set<Map.Entry<K,V>> entrySet()://将键值对对象扔到Set集合中

HashMap实现类

特点:
1.无序的
2.无索引
3.元素唯一的键唯一值可以重复
4.双列的
数据结构:哈希表,HashSet底层使用的就是HashMap
常见的方法:和Map集合中的方法是一样的

TreeMap实现类

特点:
1.无序的
2.无索引
3.元素唯一的键唯一值可以重复
4.双列的
5.可以排序的(根据键来排序)
数据结构:红黑树,TreeSet底层使用的就是TreehMap
常见的方法:和Map集合中的方法是一样的

标签:十一,元素,容器,--,Object,索引,集合
From: https://www.cnblogs.com/Uinie/p/17172373.html

相关文章

  • C# 集合
    简介集合表示一组具有某种性质的数学元素,引用到程序设计中表示一组具有相同性质的对象。集合的大小可以动态调整,也可以在运行时添加或删除元素官方文档System.Collections数组集合泛型集合Concurrent线程安全集合System.Collections.Specialized集合基类接口ICollect......
  • 第十一次
    这个作业属于哪个课程https://edu.cnblogs.com/campus/sdscfz/SF4这个作业要求在哪里https://edu.cnblogs.com/campus/sdscfz/SF4/homework/12964这个作业的目标第十一次作业<!doctypehtml><html><head><metacharset="utf-8"><title>自我介绍&......
  • web安全为主的网页集合
    xrayGitHub-chaitin/xray:一款完善的安全评估工具,支持常见web安全问题扫描和自定义poc|使用之前务必先阅读文档vulhubVulhub-Docker-Composefileforvulnerabilityenvironment ......
  • Hilbert 曲线与集合势理论
    1空间填充曲线1.1曲线(我们所讨论的)曲线:定义域为[0,1]的连续映射.1.2空间填充曲线(我们所讨论的)空间填充曲线的定义:连续满射f:[0,1]→[0,1]2.2Hilbert曲线2.1n阶伪Hilbert曲线Hn(t)理解一:将[0,1]2等分成2n×2n个小方块,按特定顺序将每个小方块的中心点......
  • List集合分组(大List分割成多个小List)
    1.问题来源有的时候我们需要将一个大的List集合分割成多个小的List集合以便进行操作。比如批量查询、新增、或者删除的时候,如果数量太大,可能会导致诸如sql语句过长、执行缓慢等问题。这个时候我们需要将一个大的List集合分割成多个小的List集合以便分开操作,可以有效提升执行效率。2......
  • Python基础语法(四)—列表、元组、字典、集合、字符串
    Python基础语法(一):https://blog.zeruns.tech/index.php/archives/54/Python基础语法(二):https://blog.zeruns.tech/index.php/archives/112/Python基础语法(三):https://blog.zeruns.tech/index.php/archives/150/Python基础语法(四):https://blog.zeruns.tech/index.php/archives/299/列......
  • Python之元组 字典 集合
    Python列表Python之元组字典集合元组介绍元组的表现形式是tuple元组是一个不可变的序列(一般但这个数据不改变的时候,我们就采用元组,其余情况都用列表。)创建元组通过()创建元素tup=()print(tup,type(tup))()<class'tuple'>添加元素直接在元组中添加tup=()print(tup)tup......
  • 博客园美化教程大集合【超详细...】
    博客园美化教程大集合----极致个性化你的专属博客要说个人技术博客网站,有很多,像CSDN、博客园、简书、知乎专栏、GithubPage等等,应该来说各有优缺点吧,这几个博客我也用过,个人来说还是比较喜欢博客园这种多一点,简单纯净,广告比较少,不影响整体观感定制自己的博客如下0.美化整体效......
  • 三相级联H桥逆变器仿真模型,七电平,十一电平逆变器,采用载波移相或者载波层叠的控制方法,
    三相级联H桥逆变器仿真模型,七电平,十一电平逆变器,采用载波移相或者载波层叠的控制方法,可以提供参考文献ID:6430694665023809......
  • 第十一次
    这个作业属于哪个课程https://edu.cnblogs.com/campus/sdscfz/SF4这个作业要求在哪里https://edu.cnblogs.com/campus/sdscfz/SF4/homework/12964这个作业的目标第十一次作业<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8">......