Java集合框架和泛型

Java集合框架提供了一套性能优良、使用方便的接口和类,它们位于java.util包中。

Collection接口存储一组不唯一,无序的对象。

List接口存储一组不唯一,有序(插入顺序)的对象。

Set接口存储一组唯一,无序的对象。

Map接口存储一组键值对象,提供key到value的映射。

在Java中,Collection是所有集合类的根接口,它继承自Iterable接口,表示一组对象的集合。List、Set都继承自Collection接口,而Map则不是集合,它是一个映射表。

List是有序集合,可以包含重复的元素。它的实现类有ArrayList、LinkedList等。

Set是无序集合,不能包含重复的元素。它的实现类有HashSet、TreeSet等。

Map是一种映射表,它存储的是键值对(key-value pairs),其中键是唯一的,而值可以重复。它的实现类有HashMap、TreeMap等。

List接口的实现类:

ArrayList实现了长度可变的数组,在内存中分配连续的空间,遍历元素和随机访问元素的效率比较高。

LinkedList采用链表存储方式,插入、删除元素时效比较高。

ArrayList常用方法

boolean add(Object o):在列表的末尾顺序添加元素,起始索引位置从0开始。

void add(int index, Object o): 在指定的索引位置添加元素。索引位置必须介于0和列表中元素个数之间。

int size(): 返回列表中的元素个数。

Object get(int index):返回指定索引位置处的元素。取出的元素是Object类型,使用前需要进行强制类型转换。

boolean contains(Object o): 判断列表中是否存在指定元素。

boolean remove(Object o): 从列表中删除元素。

Object remove(int index): 从列表中删除指定位置元素,起始索引位置从0开始。

clear(): 没有返回值,它的作用是清空集合中所有元素,使集合的size变为0。

boolean isEmpty(): 表示集合是否为空。如果集合中没有元素,则放回true,否则返回false。

Iterator iterator(): 返回一个Iterator接口类型的迭代器对象,用于遍历集合中的元素。

Object[] toArray(): 返回一个Object类型的数组,数组中包含了集合中的所有元素。如果需要返回指定类型的数组,可以使用重载的 toArray(T[] a) 方法。

需要注意的是,如果集合中的元素类型为基本数据类型,例如 int、double 等,则 toArray() 方法返回的数组类型为相应的包装类型,例如 Integer、Double 等。如果需要将其转换成基本数据类型的数组,则需要使用 Java 提供的 Array 类的相应方法进行转换。

LinkedList类是List接口的一个具体实现类,LinkedList类用于创建链表数据结构。插入或者删除元素时,它提供更好的性能。

LinkedList独有方法:

void addFirst(Object o):在列表的首部添加元素。

void addLast(Object o): 在列表的末尾添加元素。

Object getFirst(): 返回列表中的第一个元素。

Object getLast(): 返回列表中的最后一个元素。

Object removeFirst(): 删除并返回列表中的第一个元素。

Object removeLast(): 删除并返回列表中的最后一个元素。

Set接口:

Set接口存储一组唯一,无序的对象。HashSet是Set接口常用的实现类,Set中存放对象的引用。
Set接口如何判断加入对象是否已经存在:采用对象的equals()方法比较两个个对象是否相等。
Set 是一种无序的集合,因此不能像 List 一样通过索引来访问集合中的元素。如果需要输出 Set 中的元素,可以使用迭代器(Iterator)或者增强型 for 循环(foreach loop)。

使用迭代器可以遍历 Set 中的所有元素,并对每个元素进行操作。例如,可以使用如下代码输出 Set 中的所有元素:

Set<String> set = new HashSet<>();
// 添加元素到 Set 中
set.add("apple");
set.add("banana");
set.add("orange");

// 使用迭代器遍历 Set 中的所有元素并输出
Iterator<String> iterator = set.iterator();
while (iterator.hasNext()) {
    String element = iterator.next();
    System.out.println(element);
}

另一种方法是使用增强型 for 循环,也称为 foreach 循环。它可以更简洁地遍历集合中的元素,但是不能用于修改集合中的元素。例如,可以使用如下代码输出 Set 中的所有元素:

Set<String> set = new HashSet<>();
// 添加元素到 Set 中
set.add("apple");
set.add("banana");
set.add("orange");

// 使用增强型 for 循环遍历 Set 中的所有元素并输出
for (String element : set) {
    System.out.println(element);
}
无论是使用迭代器还是增强型 for 循环,输出的元素顺序都是无序的,因为 Set 是一种无序集合。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值