集合框架(Ninth Day)

数组和集合的区别
        相同点:都是容器,可以储存多个数据
        不同点:数组的长度是不可变的,集合的长度是可变的
                数组可以存基础数据类型和引用数据类型,集合只能存引用数据类型
                (如果存基础数据类型,需要存对应的包装类)

集合体系结构


Collection的常用方法
            方法名                                      说明
        boolean add(E e)                      添加元素
        boolean remove(Object o)        从集合中移除指定的元素
        boolean removeif(Object o)      根据条件进行移除
        void clear()                                 清空集合中的元素
        boolean coontains(Object o)      判断集合中是否存在指定的元素
        boolean isEmpty()                      判断集合是否为空
        int size()                                      集合的长度,集合中元素的个数
迭代器:集合专用的遍历方式
        Iterator<E> iterator():返回此集合中元素的迭代器通过集合对象的 iterator()方法得到
        iterator中常用的方法:
                boolean hasNext():判断当前位置是否有元素可以被取出
                E next():获取当前位置的元素,将迭代器对象移向下一个索引的位置
            例:Collection<String> c = new ArrayList<>()
                c.add("hello")    
                Iterator<String> it = c.iterator();
                while(it.hasNext()){
                    String s = it.next();
                    System.out.println(s);
                }
                迭代器的删除方法:
                    void remove():删除迭代器对象当前指向的元素
        增强for循环(foreach)
            格式:for(集合/数组中的元素数据类型 变量名 :集合/数组名){}

List
    特点:1、存取有序  2、可以重复 3、有索引
    特有方法:
        void add(int index,E element)        在此集合中的指定位置插入指定元素
        E remove(int index)                    删除指定索引处的元素,返回被删除的元素
        E set(int index ,E element)            修改指定索引处的元素,返回被修改的元素
        E get(int index)                    返回指定索引处的元素
    List集合的实现类
        ArrayList:底层是数组结构实现,查询快、增删慢
        LinkedList集合:底层是链表结构实现,查询慢、增删快
    LinkedList特有的方法:
        public void addFirst(E e)        在列表的开头插入指定的元素
        Public void addLast(E e)        将指定的元素追加到此列表的末尾
        public E getFirst()                返回此列表中的第一个元素    
        public E getLast()                返回此列表中的最后一个元素    
        public E removeFirst()            从此列表中删除并返回第一个元素
        public E removeLast()            从此列表中删除并返回最后一个元素

Set集合
    特点:1、不可以存储重复的元素 2、没有索引,不能使用普通for循环遍历
    TreeSet:不可以存储重复的元素、没有索引、可以将元素按照规则进行排序
                    TreeSet():根据其元素的自然排序进行排序
                    TreeSet(Comparator comparator):根据指定的比较器进行排序
HashSet:
        底层结构是哈希表
        存取无序
        不可以存储重复的元素
        没有索引,不能使用普通for循环遍历
        存储自定义类型元素,要想实现元素的唯一,必须重写hashCode方法和equal方法
    Object 类中的public int hashCode():返回对象的哈希码值
    哈希值的特点:
            1、同一个对象多次调用 hashCode() 方法返回的哈希值是相同的
            2、默认情况下,不同对象的哈希值是不同的。而重写 hashCode() 方法,
            可以实现让不同对象的哈希值相同
    哈希表结构:
            节点个数少于等于8个:数组+链表
            节点个数多于8个:数组+红黑树

Map:
    interface Map<K,V>     K:键的类型;V:值的类型    
    特点:双列集合,一个键对应一个值
          键不可以重复,值可以重复
    方法:
        V put(K key,V value)                添加元素
        V remove(Object key)                根据键删除键值对元素
        void clear()                        移除所有的键值对元素
        boolean containsKey(Object key)        判断集合是否包含指定的键
        boolean containsValue(Object value)    判断集合是否包含指定的值
        boolean isEmpty()                    判断集合是否为空
        int size()                            集合的长度,也就是集合中键值对的个数
    获取方法:
        V get(Object key)                    根据键获取值
        Set<K> keySet()                        获取所有键的集合
        Collection<V> values()                获取所有值的集合    
        Set<Map.Entry<K,V>> entrySet()        获取所有键值对对象的集合
HashMap:
    底层是哈希表结构的
    依赖hashCode方法和equals方法保证键的唯一
    如果键要存储的是自定义对象,需要重写hashCode和equals方法
TreeMap:
    底层是红黑树结构
    依赖自然排序和比较器排序,对键进行排序
    如果键存储的是自定义对象,需要实现Comparable接口
    或者在创建TreeMap对象时候给出Comparator比较器排序规则
    
    创建不可变集合
        在List、Set、Map接口中,都存在of方法,可以创建一个不可变的集合
            这个集合不能添加,不能删除,不能修改
            但是可以结合集合的带参构造,实现集合的批量添加
        在 Map 接口中,还有一个 ofEntries 方法可以提高代码的阅读性
        首先会把键值对封装成一个Entry对象,再把这个Entry对象添加到集合当中
        例:
            List<String> list1 = List.of("a", "b", "c", "d");
            ArrayList<String> list2 = new ArrayList<>(List.of("a", "b", "c", "d"));
            Set<String> set = Set.of("a", "b", "c", "d", "a");
            Map<String, String> map1 = Map.ofEntries(
                Map.entry("小黄", "江苏"),
                Map.entry("小蓝", "北京")
            );
        Map<String, String> map2 = Map.of("小黄", "江苏", "小蓝", "北京", "大黄", "上海");
    
    并发集合类
        ConcurrentHashMap:这是一个线程安全的哈希表,它提供了高效的并发读写操作。
        ConcurrentHashMap 内部使用了分段锁技术,将哈希表划分为多个段,每个段独立加锁,
        从而减少了锁的竞争,提高了并发性能,JDK 8之后,当链表长度大于等于8时,自动转换成红黑树结构。

        CopyOnWriteArrayList:这是一个线程安全的ArrayList实现,它通过复制原始数据来实现对数据的修改。
        当对列表进行修改操作时,它会创建一个新的列表副本,将修改后的数据写入新副本,
        然后用新副本替换原始列表。这种方式适用于读操作远多于写操作的场景。

        CopyOnWriteArraySet:这是一个线程安全的Set实现,它基于CopyOnWriteArrayList实现,
                            具有相同的特点和优缺点。

        ConcurrentLinkedQueue:这是一个线程安全的队列,它提供了高效的并发入队和出队操作。
        ConcurrentLinkedQueue内部使用了无锁数据结构,通过CAS操作实现对队列的并发访问。
        

  • 37
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《自动控制系统,第九版》是一本关于自动控制系统的教科书。这本教科书由Richard C. Dorf和Robert H. Bishop共同编写,是该领域的权威参考书之一。 这本教科书主要介绍了自动控制系统的基本原理、设计和应用。它的目标是帮助学习者深入理解自动控制系统的概念和工作原理,并能够应用这些知识来解决实际问题。 第九版相比前几版进行了全面的更新和改进。它包括了最新的自动控制技术和应用,如无人驾驶车辆、机器人技术和智能家居系统等。此外,它还引入了一些新方法和工具,如模型预测控制、最优控制和自适应控制等。 教科书的内容结构清晰、详细。它从控制系统的基本概念开始,介绍了系统建模与分析、传递函数和状态空间表示等基本理论。然后,它探讨了各种常见的控制器设计方法和技术,包括PID控制、根轨迹法、频域和时域分析等。最后,它还介绍了一些高级主题,如多变量控制、数字控制和非线性控制。 此外,教科书还包含了大量的案例分析和练习题,帮助学习者加深对理论知识的理解,并提供实践应用的机会。每一章节的末尾还有总结和概念回顾,方便读者复习和巩固学习成果。 综上所述,《自动控制系统,第九版》是一本全面介绍自动控制系统的教科书,适用于电子、自动化、机械等专业的本科和研究生学生,以及从事相关工程和研究的专业人士。它不仅提供了深入理解自动控制系统的基本概念和原理的机会,还为读者提供了解决实际问题的技能和工具。 ### 回答2: 《自动控制系统第九版》是一本涵盖自动控制理论和应用的教材。本书系统地介绍了自动控制系统的基本原理、设计方法和实际应用。 首先,本书对自动控制系统的基础知识进行了全面而深入的讲解。其中包括了控制系统的基本概念、信号与系统的分析、系统建模、传递函数与状态空间描述、时域分析和频域分析等内容。通过这些基础知识的学习,读者可以了解控制系统的基本工作原理和数学描述方法。 其次,本书介绍了自动控制系统的设计方法与技巧。其中涉及了根轨迹法、频率响应法、状态空间法等设计方法。这些方法可以帮助读者进行控制系统的设计和优化,使其具备所需的性能和稳定性。 此外,本书还广泛涵盖了自动控制系统在各个领域的应用。例如电气系统、机械系统、化工系统、交通运输系统等。通过大量的实际案例和应用实例,读者可以了解到自动控制系统在工程实践中的重要性和广泛应用性。 总的来说,《自动控制系统第九版》是一本内容详尽、结构清晰、理论与实践相结合的教材。它适用于自动控制领域的学生和从业人员,既可以作为课堂教学的参考资料,也可以作为工程实践的工具书。无论是在学习还是应用中,本书都能够为读者提供充足的理论支持和实际指导。 ### 回答3: 自动控制系统是指通过感知、分析和响应来控制机器、设备或过程的一种系统。第九版《自动控制系统》是一本与自动控制系统相关的教材。 这本教材内容全面,对自动控制系统的各个方面进行了介绍和解释。它包括了控制系统的基本原理、技术和应用。其中包括了控制系统的建模与分析、系统的稳定性和动态响应、PID控制器、频域分析和设计、根轨迹法等等。这本教材适用于工程、理工科类学生以及自动化控制系统相关专业的学者研究。 与之前版本相比,第九版对内容进行了更新和扩充,加入了新的控制理论和方法。它结合了实际案例和示例,帮助读者更好地理解和应用所学知识。此外,它还提供了习题和实践项目,供读者实践和巩固所学内容。 《自动控制系统》第九版是一本权威且实用的教材,它不仅适用于课堂教学,也可作为工程控制领域的参考书。无论是学习控制系统的基础知识,还是深入了解控制系统的各种技术和应用,这本书都是一本很好的选择。它通过清晰的语言和图例,使得读者能够轻松理解和掌握自动控制系统的基本概念和原理。 总之,第九版《自动控制系统》是一本内容丰富、全面而权威的教材,它为读者提供了全面的控制系统知识,并帮助读者在实践中应用所学内容。无论是学生还是专业人士,都可以从中受益,掌握自动控制系统的基础与应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值