什么是集合

本文详细介绍了Java中的集合框架,包括ArrayList、LinkedList和HashSet等,以及它们的特点和常用操作。此外,还讨论了Map接口及HashMap的使用,并强调了泛型在提高代码复用性和类型安全性方面的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

集合

什么是集合(Collection)?-集合就是‘由若干个确定的元素所构成的整体”.集合是存储对象的容器,可以存储任意数量、任意类型的对象。

在Java中,如果一个Java对象 可以在内部持有若干其他Java对象,并对外提供访问接口,我们把这种Java对象称为集合。

数组也可以看作是一种集合
String[] ss = newString[10]; //可以持有10个String对象ss[0] = "Hello"; //可以放入String对象
String first = ss[0]; //可以获取String对象

数组有如下限制:
数组初始化后大小不可变
数组只能按索弓|顺序存取

集合有其特殊性:
集合存储的长度可变

集合只能存储对象(因为集合实际上存储的是对象的引用值也就是在堆中的地址,所以不能存放基本数据类型数据,必须经过包装类才可以存储)

Java提供了两种类型的集合接口:
Collection和Map,这两种都在java.util包下
Collection是除Map外所有其他集合类的根接口Collection接口提供了2个子接口,List接口和Set接口

List接口继承自Collection接口,它规定实现它的类存储的是有序的、不唯一的集合元素同时提供了具体的实现类ArrayList和LinkedList
ArrayList:数组形式连续的存储空间,查询速度快,增删速度慢LinkedList:双向链表,不连续的存储空间,增删速度快,查询速度慢

ArrayList类实现了List接口,是基于动态数组的类,可存储null值

ArrayList创建:
List<String> nameList =
new ArrayList<String>() ;

常用的一些方法:方法名称

说明
boolean add(E e)
向集合中添加一个元素,E是元素的数据类型
void clear()
删除集合中的所有元素
boolean contains(Object o)判断集合中是否存在指定元素
boolean isEmpty()

判断集合是否为空

boolean remove(Object o)
从集合中删除一个指定元素
int size()
返回集合中元素的个数
Object[] toArray()
返回包含此集合中所有元素的数组

常用方法:

boolean add(E e)向集合中添加元素
E get(int index)返回指定索弓|处的元素
int size()获取此集合的长度
E remove(int index)删除指定索弓|处的元素,并返回被删除的元素boolean remove(E e)删除集合中第一个出现的指定元素


常用方法:

boolean contains(Object o) list中是否包含某个元素返回true或者falseE set(int index,E e)根据索引将元素数值改变(替换)

int indexOf(E e)返回在此集合中指定元素第一次出现的索引
int lastIndexOf(E e)返回在此集合中指定元素最后- -次出现的索引boolean isEmpty()判断集合是否为空
Object[ toArray()将集合转换为数组
void clear( 将集合中的元素全部删除

LinkedList类
LinkedList类实现了List接口,是基于双向链表的类,可存储null值

LinkedL ist创建方式:
LinkedList<String> linkedList = new LinkedList<String>();LinkedList常用方法:
void addFirst(E e)将指定元素添加到此集合的开头
void addLast(E e)将指定元素添加到此集合的末尾

E getFirst()返回此集合的第一个元素
E getLast()返回此集合的最后一个元素
E removeFirst()删除此集合中的第一个 元素
E removeLast(删除此集合中的最后一个元素

LinkedList遍历集合中元素:第一种遍历方式:普通for循环
for (int i = 0; i < linkedList.size(); i++) {
Sys tem. out. println(linkedList.get(i));
}

LinkedList遍历集合中元素:

第二种遍历方式:foreach循环
for (String str : linkedList) [
System. out.println(str) ;

LinkedListjJJFJ.
=
]
第三种遍历方式:迭代器
Iterator<String> it
linkedList. iterator() ;
while (it. hasNext()) [
System. out.pr intln(it.next()) ;

set接口
Set接口继承自Collection接口,它存储的是无序的、唯- -的集合元素
HashSet类实现了Set接口,是基于HashMap实现,存储不重复、无序值
HashSet是根据对象的哈希值来确定元素在集合中的存储位置的,元素在插入时就确定了存储位置,因此,元素在集合中存储的位置是固定的(无序是指输出顺序与存储顺序不-致),具有良好的存储和查找性能(存储速度快)。保证元素的唯一 性依赖于hashCode方法和equals方法。

HashSet创建方式:
HashSet<String> set = new HashSet<String>() ;

]

HashSet遍历集合中元素:

第一种遍历方式:foreach循环
for (String str : set) [
Sys tem . out. println(str) ;
while (it. hasNext()) f
]

HashSet遍历集合中元素:第二种遍历方式:迭代器
Iterator<String> it = set. iterator() ;
Sys tem. out.pr intln(it.next()) ;


Map接口是一个根接口,它存储的是键-值对(key-value) ,其中key不允许重复, value允许重复
HashMap类实现了Map接口,存储的是无序的键值对(key-value)
●1.HashMap的key是用set集合来存放的, 所以想做到key不允许重复,key对应的类需要重写hashCode和equals方法
●2.HashMap是线程不安全的
●3.HashMap中元素的位置是不定时更新的,即元素位置不是固定的

HashMap类创建方式:
HashMap<String,String> map = new HashMap<String, String>();

常用方法:
V put(K key,V value)将指定的键与之关联的值存入HashMap中V get(K key)获取指定键所关联的值
V remove(K key)删除

]
HashMap类遍历方式

第一种遍历方式通过键值对Set集合遍历

Iterator<Entry<String, String>> it = map.entrySet(). iterator() ;
while (it.hasNext()) [
Map.Entry<String, String> entry = (Map.Entry<String, String>) it.next() ;String key = entry .getKey() ;
String value = entry.getValue();
Sys tem. out.println(key + ":" + value) ;

第二种遍历方式通过键Set集合遍历

Iterator<String> it2 = map.keySet() . iterator() ;while (it2 .hasNext()) [
String key = it2.next() ;
String value = map.get(key) ;
Sys tem. out.println(key + ":" + value) ;

]
HashMap类遍历方式
第三种遍历方式通过值Set集合遍历

Iterator<String> it3 = map.values() . iterator() ;while(it3. hasNext()) [
String value = it3.next() ;
System. out.println(value) ;

什么是泛型
泛型,即”参数化类型"。就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)。

泛型:把类型明确的工作推迟到创建对象或调用方法的时候才去明确的特殊的类型

为什么使用泛型
1.适用于多种数据类型执行相同的代码(代码复用)
2.泛型中的类型在使用时指定,不需要强制类型转换(类型安全,编译器会检查类型)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值