Java中List集合详解

news/2024/7/7 19:38:17

目录

一:Connection接口:

二:Map接口

三:Iterator迭代器,增强for


  • List , Set, Map都是接口,前两个继承至Collection接口,Map为独立接口
  • Iterator接口也是Java集合中的一员,但它与Collection、Map接口有所不同
  • Set下有HashSet,LinkedHashSet,TreeSet
  • List下有ArrayList,Vector,LinkedList
  • Map下有Hashtable,LinkedHashMap,HashMap,TreeMap
  • Collection接口下还有个Queue接口,有PriorityQueue类


一:Connection接口:

— List 有序,可重复

ArrayList
优点: 底层数据结构是数组,查询快,增删慢。
缺点: 线程不安全,效率高
Vector
优点: 底层数据结构是数组,查询快,增删慢。
缺点: 线程安全,效率低
LinkedList
优点: 底层数据结构是链表,查询慢,增删快。
缺点: 线程不安全,效率高

—Set 无序,唯一

HashSet
底层数据结构是哈希表。(无序,唯一)
如何来保证元素唯一性?
1.依赖两个方法:hashCode()和equals()

LinkedHashSet
底层数据结构是链表和哈希表。(FIFO插入有序,唯一)
1.由链表保证元素有序
2.由哈希表保证元素唯一

TreeSet
底层数据结构是红黑树。(唯一,有序)
1. 如何保证元素排序的呢?
自然排序
比较器排序
2.如何保证元素唯一性的呢?
根据比较的返回值是否是0来决定
 

二:Map接口

Map接口有三个比较重要的实现类,分别是HashMap、TreeMap和HashTable。

  • TreeMap是有序的,HashMap和HashTable是无序的。
  • Hashtable的方法是同步的,HashMap的方法不是同步的。这是两者最主要的区别。

HahsMap和HashTable的区别:

  1. Hashtable是线程安全的,HashMap不是线程安全的。
  2. HashMap效率较高,Hashtable效率较低,线程安全。
  3. Hashtable不允许null值,HashMap允许null值(key和value都允许)
  4. 父类不同:Hashtable的父类是Dictionary,HashMap的父类是AbstractMap
     

三:Iterator迭代器

Iterator接口也是Java集合中的一员,但它与Collection、Map接口有所不同,

Collection接口与Map接口主要用于存储元素,而Iterator主要用于迭代访问(即遍历)Collection中的元素,因此Iterator对象也被称为迭代器。

想要遍历Collection集合,那么就要获取该集合迭代器完成迭代操作,获取迭代器的方法:

    public Iterator iterator(): 获取集合对应的迭代器,用来遍历集合中的元素的。

Iterator接口的常用方法如下:

    public E next():返回迭代的下一个元素。

    public boolean hasNext():如果仍有元素可以迭代,则返回 true。

增强for

增强for循环(也称for each循环)是JDK1.5以后出来的一个高级for循环,专门用来遍历数组和集合的。它的内部原理其实是个Iterator迭代器,所以在遍历的过程中,不能对集合中的元素进行增删操作


http://lihuaxi.xjx100.cn/news/101267.html

相关文章

C++复习第二天:类与对象

1. 什么是面向过程?什么是面向对象? C语言是面向过程的,关注的是过程,分析出解题过程的步骤,调用函数来实现。 C是基于面向对象的,关注的是对象,将一件事物划分成不同的对象,通过不…

【车间调度】基于全球邻域和爬坡来优化模糊柔性作业车间调度问题(Matlab代码实现)

💥💥💥💞💞💞欢迎来到本博客❤️❤️❤️💥💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑…

python数学建模--线性规划问题案例及求解

目录数学问题:线性规划问题程序设计结果分析实际应用1:加工厂的生产计划设置未知数建立数学模型程序设计结果分析实际应用2:油料加工厂的采购和加工计划设置未知数建立数学模型程序设计结果分析遗留的问题钢管加工用料问题分析scipy.optimize…

全网最全学习攻略【尚硅谷电影推荐系统】附视频代码链接

简述 因为设计任务是开发一款图书推荐系统,但是没有现成的系统开发讲解,于是从网上找到了尚硅谷电影推荐系统的开发教程。 从配置虚拟机到开发各种推荐功能共耗时一个月左右,小破站里的视频教程很多但是有的是武老师少录了,有的是…

拓端tecdat|R语言实现 Copula 算法建模相依性案例分析报告

原文链接:http://tecdat.cn/?p6193 原文出处:拓端数据部落公众号 copula是将多变量分布函数与其边缘分布函数耦合的函数,通常称为边缘。Copula是建模和模拟相关随机变量的绝佳工具。Copula的主要吸引力在于,通过使用它们&#x…

计算机网络——4.1

作业4.1 题量: 38 满分: 138 作答时间:10-18 16:51至10-24 23:55 智能分析 127分 一. 单选题(共26题,78分) 1. (单选题, 3分)下列IP地址中作为环回地址用于本地软件环回测试的是() A. 128.0.0.0B. 192.0.0.0C. 12…

StringBoot 入门初始

目录1、简介1.1、什么是StringBoot ?1.2、为什么使用springboot2、构建一个 SpringBoot 项目(helloWorld)2.1、项目创建2.1.1 页面创建2.1.2 IDEA创建2.2、启动项目并访问2.2.1 创建一个HelloController.java2.2.2 启动项目2.3、自定义banner图3、Spring Boot启动器…

CIBERSORT 最全介绍 官网

最全面的免疫浸润分析使用教程,虽晚必到 ——免疫浸润分析里不得不提的神器CIBERSORt CIBERSORTx CIBERSORT初探input输入 output 代码详解 原理解析免疫浸润 反卷积_YoungLeelight的博客-CSDN博客 https://blog.csdn.net/qq_52813185/article/details/127469758?…