【JavaSE】集合(1)

Java集合


1. 集合的由来

通常情况下,程序直到运行时,才知道需要创建多少个对象。但在开发阶段,我们根本不知道到底需要多少个数量的对象,甚至不知道它的准确类型。为了满足这些常规的编程需要,我们要求能在任何时候,任何地点创建任意数量的对象,而这些对象用什么来容纳呢?我们首先想到了数组,但是数组只能放统一类型的数据,而且其长度是固定的,那该怎么办呢?集合便应运而生了!Java集合框架为程序员提供了预先包装的数据结构和算法来操纵他们。

2. 集合的概念

Java集合类,存放于 java.util 包中,是一个用来存放对象的容器。

集合只能存放对象。比如你存一个 int 型数据1放入集合中,其实它是自动转换成 Integer 类后存入的,Java中每一种基本类型都有对应的引用类型。

② 集合存放的是对象的引用,对象本身还是放在堆内存中。

③ 集合可以存放不同类型、不限数量的对象。

④ 任何对象加入集合类后,自动转变为Object类型,所以在取出的时候,需要进行强制类型转换。(解决方案:使用泛型)

3. 集合的框架

阅读Java集合框架图,不难发现:

① 所有的集合类(除Map系列)都实现了 Iterator 接口。 Iterator 接口定义了遍历集合元素的方法,主要是 hasNext(),next(),remove()三种方法。它的子接口 ListIterator 在它的基础上又添加三种方法,分别是 add(),previous(),hasPrevious()。也就是说如果实现 Iterator 接口,那么在遍历集合中元素的时候,只能往后遍历,被遍历后的元素不会再被遍历到,通常无序集合实现的都是这个接口,比如HashSet;而那些元素有序的集合,实现的一般都是 ListIterator接口,实现这个接口的集合可以双向遍历,既可以通过next()访问下一个元素,又可以通过previous()访问前一个元素,比如ArrayList。

② 抽象类的意义。如果要自己实现一个集合类,去实现那些抽象的接口会非常麻烦,工作量很大。这个时候就可以使用抽象类,这些抽象类中给我们提供了许多现成的实现,我们只需要根据自己的需求重写一些方法或者添加一些方法就可以实现自己需要的集合类,工作量大大降低。

③ 用于学习背诵的集合框架图

4. 集合的详解



参考:

https://www.cnblogs.com/ysocean/p/6555373.html

原文地址:https://www.cnblogs.com/yadiel-cc/p/11135543.html

时间: 2024-11-13 07:41:33

【JavaSE】集合(1)的相关文章

javaSE集合框架

7.集合框架  集合: Collection接口   : -List接口  (有序的,通常允许重复)   -实现类:ArrayList(用可变数组实现,不是同步的(线程不安全)) :适合查找,添加  LinkedList(双向链表的实现,不是同步的):适合插入,删除    Vector(用可变数组实现,同步的):适合查找,添加 -Set接口  (无序的,不允许重复) -实现类:HashSet(无序的,不同步,不允许重复)     TreeSet(有序的,不同步,不允许重复) Collection

JavaSE:集合总结(Collection,Map)

今天来总结JavaSE部分的集合.首先来从整体来看: 我们主要要学习的内容: Collection: Collection(接口): java.util.Collection |-- List(子接口) : |--ArrayList |--LinkedList |--Vector |-- Set(子接口) : |--AbstracSet(子接口) |--HashSet |--LinkedHashSet |--SortedSet(子接口) |--TreeSet |-- Queue(子接口) : M

JavaSE集合基础总览

Java集合 Java集合,也称之为容器.基本上你写所有的Java程序,都必须要用到一个包.该API基本都位于java.util工具类包中,是JavaSE中的重中之重.简单可以总结为"1136",分别是一个图,一个类,三个知识点,六个接口.下面逐个剖析. 1.一个图 备注: 实现Collection接口的,基本都是按个的方式存入的集合类. 实现Map接口的,基本都是按照键值对的方式存入的集合类. 这两个接口都定义了该类型集合的基本方法. Collectionz中,两个对象互相equal

[javaSE] 集合工具类(Collections-sort)

java为我们提供了一个集合的工具类,方便我们对集合进行操作,里面的方法都是静态方法. Collections.sort()方法,参数:List<T>集合对象,这个对象带着泛型,是为了保证集合中的元素具备可比较性,因此这个返回值的泛型就会特殊点, <T extends Comparable <? super T>> 默认排序字符串,是按照字母的排列顺序 如果是中文,默认是按照ascii编码进行排序的 自定义一个比较器,实现按照字符串的长度进行排序 定义一个类StrCom

[javaSE] 集合框架(迭代器)

当我们创建一个集合以后,可以直接使用system.out.println()来打印这个集合,但是,我们需要可以对每个元素进行操作,所以,这里需要使用迭代器来遍历集合 迭代器其实就是集合取出元素的方式 调用List对象的iterator()方法,得到Iterator对象,这个类是个接口类型,因此可以知道返回的是Iterator接口的子对象 while()循环,条件是,List对象的hasNext()方法,返回布尔值不为false 循环里面调用List对象的next()方法,可以得到每一个元素 im

javaSE集合---进度2

一.集合框架 1.特点 对象封装数据,对象多了也需要存储,集合用于存储对象. 对象的个数确定可以使用数组,但是不确定的话,可以用集合,因为集合是可变长度的. 2.集合和数组的区别 数组是固定长度的,集合是可变长度的. 数组可以存储基本数据类型,也可以存储引用数据类型:集合只能存储引用数据类型. 数组存储的元素必须是同一个数据类型:集合存储的对象可以是不同的数据类型. 3.数据结构 对于集合容器,有很多种.因为每一个容器的自身特点不同,其实原理在于每个容器内部的数据结构不同,集合容器在不断向上的抽

[javaSE] 集合框架(体系概述)

为什么出现集合类 为了方便对多个对象的操作,对对象进行存储,集合就是存储对象最常用的一种方式 数组和集合的不同 数组是固定长度的,集合是可变长度的 数组可以存储基本数据类型,集合只能存储对象 数组只能存储同一种对象,集合可以存储多种对象 常见体系 容器有很多种,有特性和共性,我们对共性进行不断的向上抽取,就形成了一个体系,这就是集合框架 最顶层Collection接口,分出两个常用的子接口List和Set List接口分出三个常见的ArrayList,LinkedList,Vector Set接

[javaSE] 集合框架(Map概述)

Map集合,将key对象映射到value对象 三个主要的子类:Hashtable,HashMap,TreeMap Hashtable:底层是哈希表数据结构,不允许使用null值,线程同步 HashMap:底层是哈希表数据结构,允许使用null值,线程不同步 TreeMap:底层是二叉树数据结构,线程不同步,可以用于给Map集合中的键排序 使用keySet()方法遍历Map集合 调用Map对象的keySet()方法,得到Set对象,这里存储的是所有的键 import java.util.HashM

[javaSE] 集合框架(共性方法)

Collection接口的常用方法 add(),添加一个元素 addAll(),添加一组元素 clear(),清空 remove(),移除一个 removeAll(),移除一组 size(),元素个数 isEmpty(),判断是否为空 iterator(),迭代 集合中存储的对象,都是引用地址 打印集合,直接system.out.println()会输出集合,包在一个中括号里面 List:元素是有序的,元素可以重复,该集合体系有索引 Set:元素是无序的,元素不可以重复 List集合的特有的方法

[javaSE] 集合框架(TreeSet)

TreeSet:可以对Set集合中的元素排序,默认按照ascii表排序,二叉树结构 左边叉是小的,右边叉是大的 存储自定义对象 定义一个类Student实现Comparable类,使自定义类具备比较性 定义属性年龄age 定义属性姓名name 实现compareTo()方法,传递进来另一个Student对象 判断当前Student对象的age大于另一个Student对象的age,返回1,否则返回-1 获取Student对对象 调用TreeSet对象的add()方法,参数:Student对象 遍历