JAVA--collection集合、Iterator迭代器

JAVA–collection集合、Iterator迭代器

一、集合

集合框架被设计成要满足以下几个目标。

该框架必须是高性能的。基本集合(动态数组,链表,树,哈希表)的实现也必须是高效的。

该框架允许不同类型的集合,以类似的方式工作,具有高度的互操作性。

对一个集合的扩展和适应必须是简单的。

为此,整个集合框架就围绕一组标准接口而设计。你可以直接使用这些接口的标准实现,诸如: LinkedList, HashSet, 和 TreeSet 等,除此之外你也可以通过这些接口实现自己的集合。

在这里插入图片描述

集合框架是一个用来代表和操纵集合的统一架构。所有的集合框架都包含如下内容:

接口:是代表集合的抽象数据类型。例如 Collection、List、Set、Map 等。之所以定义多个接口,是为了以不同的方式操作集合对象

实现(类):是集合接口的具体实现。从本质上讲,它们是可重复使用的数据结构,例如:ArrayList、LinkedList、HashSet、HashMap。

算法:是实现集合接口的对象里的方法执行的一些有用的计算,例如:搜索和排序。这些算法被称为多态,那是因为相同的方法可以在相似的接口上有着不同的实现。

除了集合,该框架也定义了几个 Map 接口和类。Map 里存储的是键/值对。尽管 Map 不是集合,但是它们完全整合在集合中。
在这里插入图片描述
集合接口
集合框架定义了一些接口。本节提供了每个接口的概述:

序号 接口描述
1 Collection 接口
Collection 是最基本的集合接口,一个 Collection 代表一组 Object,即 Collection 的元素, Java不提供直接继承自Collection的类,只提供继承于的子接口(如List和set)。

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

2 List 接口
List接口是一个有序的 Collection,使用此接口能够精确的控制每个元素插入的位置,能够通过索引(元素在List中位置,类似于数组的下标)来访问List中的元素,第一个元素的索引为 0,而且允许有相同的元素。

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

3 Set
Set 具有与 Collection 完全一样的接口,只是行为上不同,Set 不保存重复的元素。

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

4 SortedSet
继承于Set保存有序的集合。
5 Map
Map 接口存储一组键值对象,提供key(键)到value(值)的映射。

6 Map.Entry
描述在一个Map中的一个元素(键/值对)。是一个 Map 的内部接口。
7 SortedMap
继承于 Map,使 Key 保持在升序排列。
8 Enumeration
这是一个传统的接口和定义的方法,通过它可以枚举(一次获得一个)对象集合中的元素。这个传统接口已被迭代器取代。

二、collection集合

一 、Collection:
集合的顶层接口,不能被实例化
a) 根接口Collection
 i. 常用子接口
  1. List
   实现类:ArrayList、Vector、LinkedList
  2. Set
   实现类:HashSet、TreeSet
b) 添加功能
 i. boolean add(object obj)添加一个元素
 ii. boolean addAll(Collection c)将集合c的全部元素添加到原集合元素后返回true
 iii. 添加功能永远返回true
c) 删除功能
 i. void clear();移除所有元素
 ii. boolean remove(Object o)移除一个元素
 iii. boolean removeAll(Collection c)移除一个集合的元素,只要有一个被移除就返回true,改变原集合,删除原集合中和c中相同的元素
 iv. 删除功能只有删除成功后才返回true
d) 判断功能
 i. boolean contain(object o)判断集合中是否包含指定的元素。
 ii. boolean containsAll(Collection c)判断原集合中是否包含指定集合c的所有元素,有则true,
 iii. boolean isEmpty()判断集合是否为空
e) 获取功能
 i. Iterator iterator()迭代器,集合的专用方式,实现遍历的功能
 ii. Object next()获取当前元素,并移动到下一个位置
 iii. boolean hasNext()判断此位置是否有元素
 iv. 迭代器遍历实例在下面
f) 长度功能
 i. int size()元素的个数
 ii. 数组和字符串中都是length()方法获取元素个数,集合中是size()方法
  因为object包括集合、字符串、数组,所以其不能直接用length方法。
g) 交集功能boolean retainAll(Collection c)
 两个集合交集的元素给原集合,并判断原集合是否改变,改变则true,不变则false
h) 把集合转换为数组
 i. Object [] toArray()

package demo01;
import java.util.ArrayList;
import java.util.Collection;

public class Demo01Collection {
public static void main(String[] args) {
	Collection<String> coll =new ArrayList<>();//体现了多态
	System.out.println(coll);
	boolean b1 = coll.add("Tom");
	System.out.println(b1);
	System.out.println(coll);
	coll.add("A");
	coll.add("B");
	coll.add("C");
	coll.add("D");
	System.out.println(coll);
	boolean b2 = coll.remove("C");
	System.out.println(b2);
	System.out.println(coll);
	boolean b3 = coll.contains("D");
			System.out.println(b3);
	boolean b4 =coll.contains("B");
			System.out.println(b4);
			boolean b5=coll.isEmpty();
			System.out.println(b5);
			int b6 =coll.size();
			System.out.println(b6);
			Object[] arr =coll.toArray();
			{
				System.out.println(arr[0]);
			}
	System.out.println("==========================");
	coll.clear();
	System.out.println(coll);
	b5=coll.isEmpty();
	System.out.println(b5);
}
}

在这里插入图片描述

三、Iterator迭代器

Java Iterator(迭代器)不是一个集合,它是一种用于访问集合的方法,可用于迭代 ArrayList 和 HashSet 等集合。

Iterator 是 Java 迭代器最简单的实现,ListIterator 是 Collection API 中的接口, 它扩展了 Iterator 接口。

在这里插入图片描述

迭代器 it 的两个基本操作是 next 、hasNext 和 remove。

调用 it.next() 会返回迭代器的下一个元素,并且更新迭代器的状态。

调用 it.hasNext() 用于检测集合中是否还有元素。

调用 it.remove() 将迭代器返回的元素删除。

Iterator 类位于 java.util 包中,使用前需要引入它,语法格式如下:

import java.util.Iterator; // 引入 Iterator 类

package demo01;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class Demo02Iterator {
public static void main(String[] args) {
	Collection<String> coll = new ArrayList<>();
	coll.add("姚明");
	coll.add("科比");
	coll.add("哈登");
	coll.add("詹姆斯");
	coll.add("艾弗森");
	coll.add("麦迪");
	Iterator<String> it =coll.iterator();
	if(it.hasNext()) {
		String e =it.next();
		System.out.println(e);
	}
	if(it.hasNext()) {
		String e =it.next();
		System.out.println(e);
	}
	System.out.println("========================");
	while(it.hasNext()) {
		String e =it.next();
		System.out.println(e);
	}
	System.out.println("=====================");
	for(Iterator<String> it2=coll.iterator();it2.hasNext();) {
		String e = it2.next();
		System.out.println(e);
	}
	System.out.println("=========3=========");
	for(String s:coll) {
		System.out.println(s);
	}
	System.out.println("==========4=============");
	int[] arr1 = {45,6,7,8,9,10};
	for(int i=0;i<arr1.length;i++) {
		System.out.println(i);
	}
	for(int i:arr1) {
		System.out.println(i);
	}
}
}

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值