Java数据结构 (2) :集合框架(Collection、Map)+ Stream流简介

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

Stream是jdk8开始新增的一套API(java.util.stream.*),可以用于操作集合或者数组的数据。


0 数组:Array

0.1 初始化

int[] arr = new int[] {
   25, 35, 45, 55};
int[] arr = new int[10];
int[] arr = {
   1, 2, 3, 4, 5};
int[][] arr2d = {
   {
   1, 2}, {
   3, 4}};

0.2 遍历

/* 传统for循环 */
for (int i = 0; i < arr.length; i++) {
   		// 长度属性length
	System.out.println(arr[i]);
}

/* forEach循环 */
for (int x : arr) {
   
	System.out.println(x);
}

1 单列集合:Collection

  • List系列集合
    • ArrayList、LinkedList:有序、可重复、有索引
  • Set系列集合
    • HashSet:无序、不重复、无索引
    • LinkedHashSet:有先后顺序、不重复、无索引
    • TreeSet:按大小默认升序排序、不重复、无索引

1.1 Collection接口

单列集合的顶层接口Collection<E>

Collection<String> colle = new ArrayList<>();

1.1.1 通用方法 ⭐️

方法名 说明
public boolean add(E e) 把给定的对象添加到当前集合中
public boolean size() 返回集合中元素的个数
public void clear() 清空集合中所有元素
public boolean isEmpty() 判断当前集合是否为空
public boolean remove(E e) 把给定的对象在当前集合中删除
public boolean contains(Object obj) 判断当前集合中是否包含给定的对象
public Object[] toArray() 把集合中的元素存储到数组中

1.1.2 遍历

(1) 迭代器

迭代器是用来遍历集合的专用方式(数组没有迭代器),在Java中迭代器的代表是Iterator。

方法名 说明
Iterator<E> iterator() 返回集合中的迭代器对象,该迭代器对象默认指向当前集合的第一个元素

Iterator迭代器中的常用方法

方法名 说明
boolean hasNext() 判断当前位置是否有元素
E next() 返回当前位置的元素,并同时将迭代器对象指向下一个元素

Collection本身无索引,故无法用正常的fori遍历,但可以使用增强型for遍历。

/* 迭代器遍历 */
Iterator<String> it = colle.iterator();
while (it.hasNext()) {
   
	System.out.println(it.next());
}

/* 增强版for遍历(实际底层使用的也是迭代器) */
for (String s : colle) {
   
	System.out.println(s);
}
(2) forEach()

调用forEach()方法,并使用Lambda表达式简化书写

colle.forEach(new Consumer<String>() {
   
	@Override
	public void accept(String s) {
   
		System.out.println(s);
	}
});
// 使用Lambda表达式简化
colle.forEach(s -> {
   
	System.out.println(s);
});
// 进一步简化
colle.forEach(System.out::println);

1.2 List系列集合 ⭐️

List系列集合添加的元素有序、可重复、有索引。因为有索引,故可用fori遍历。

List<String> list = new ArrayList<>();
List<String> linkedList = new LinkedList<>();
方法名 说明
void add(int index, E element) 在此集合中的指定位置插入指定元素
E remove(int index) 删除指定索引处的元素并返回它
E set(int index, E element) 修改指定索引处的元素并返回它
E get(int index) 返回指定索引处的元素

1.2.1 ArrayList ⭐️

基于数组实现,支持随机存取(顺序表),查找快、增删慢。

利用无参构造器创建的ArrayList,会在底层创建一个默认长度为0的数组。添加第一个元素时,底层会创建一个新的长度为10的数组。存满时,会扩容1.5倍。如果一次添加多个元素,1.5倍还放不下,则新创建数组的长度以实际为准。

/* 定义 */
ArrayList<Integer> list = new ArrayList<>();	// 元素必须为引用数据类型
ArrayList<Integer> list = new ArrayList<>(Arrays.asList(1, 2, 3));	// 初始化时赋值
List<Integer> list = Arrays.stream
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Akira37

💰unneeded

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值