JAVA从零开始10_ArrayList

一、Java中的集合

在 Java 中,集合(Collection)是一种用于存储和操作数据的数据结构。集合框架(Collection Framework)为 Java 提供了一套丰富的预定义类和接口,使得开发人员能够方便地处理各种数据集合。Java 集合框架主要包括以下几个部分:

  1. 接口:集合框架定义了一些重要的接口,如 Collection、List、Set、Queue、Deque、Map 等。这些接口规定了各种集合类型的基本行为和操作。

  2. 实现类:集合框架提供了各种接口的具体实现类。这些实现类包括:ArrayList、LinkedList、HashSet、LinkedHashSet、TreeSet、PriorityQueue、ArrayDeque、HashMap、LinkedHashMap、TreeMap 等。开发人员可以根据具体需求选择合适的实现类。

  3. 算法:集合框架还提供了一些通用的算法,如排序、查找、比较等。这些算法主要通过 Collections 类提供,可以对各种集合进行操作。

以下是一些常见的集合类型:

  1. List:列表是一种有序的集合,可以包含重复的元素。列表的元素可以通过索引访问。常用的实现类有 ArrayList(基于动态数组)和 LinkedList(基于双向链表)。

  2. Set:集合是一种无序的集合,不包含重复的元素。常用的实现类有 HashSet(基于哈希表,无序)、LinkedHashSet(基于哈希表和链表,保持插入顺序)和 TreeSet(基于红黑树,有序)。

  3. Queue:队列是一种特殊的线性表,遵循先进先出(FIFO)原则。常用的实现类有 LinkedList(双向链表实现,也可作为双端队列使用)和 PriorityQueue(基于优先级的队列)。

  4. Deque:双端队列(Double Ended Queue)是一种具有队列和栈性质的数据结构。它允许在队列的两端插入和删除元素。常用的实现类有 ArrayDeque(基于动态数组)和 LinkedList(基于双向链表)。

  5. Map:映射是一种将键映射到值的数据结构。一个映射不能包含重复的键,每个键最多只能映射到一个值。常用的实现类有 HashMap(基于哈希表,无序)、LinkedHashMap(基于哈希表和链表,保持插入顺序)和 TreeMap(基于红黑树,按键的自然顺序或者自定义的比较器顺序进行排序)。

在 Java 集合框架中,有一些集合类可以保持插入顺序:

  1. LinkedHashSet:这是一个 Set 接口的实现类,基于哈希表和链表。它维护了一个运行于所有条目的双向链表,从而保持了插入顺序。在遍历 LinkedHashSet 时,元素将按照它们插入的顺序返回。

  2. LinkedHashMap:这是一个 Map 接口的实现类,同样基于哈希表和链表。它也维护了一个运行于所有条目的双向链表。当遍历 LinkedHashMap 时,键值对将按照它们插入的顺序返回。

这些集合类在需要保持元素顺序的情况下非常有用。例如,在实现 LRU(最近最少使用)缓存策略时,可以使用 LinkedHashMap 来有效地保持访问顺序。


二、集合和数组

集合(Collections)和数组(Arrays)都是用于存储和操作数据的数据结构,但它们之间存在一些显著的区别:

  1. 大小:数组在创建时大小是固定的,无法在运行时改变。相比之下,集合是动态的,可以在运行时根据需要增加或减少元素。

  2. 类型:数组可以存储基本数据类型(如 int、float、double 等)和对象。而集合只能存储对象(实际上是对象的引用)。对于基本数据类型,需要使用相应的包装类(如 Integer、Float、Double 等)。

  3. 功能:数组提供的操作相对较少,主要包括访问、修改和遍历元素。集合框架提供了丰富的预定义类和接口,以及一系列的算法和操作,如添加、删除、查找、排序等。

  4. 性能:数组在内存中是连续的,访问速度快。而集合在内存中的存储方式取决于具体实现类(如 ArrayList、LinkedList、HashSet 等),性能可能有所不同。在某些情况下,数组可能更适合于性能敏感的操作。

  5. 灵活性:集合提供了多种数据结构(如 List、Se

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值