Java基础语法 说说集合框架的简单学习思路

本文引导读者通过回顾数组操作,理解Java集合框架的学习思路,重点讲解了Collection和Map接口层次结构,以及如何通过实例如ArrayList进行增删改查。通过实际操作演示,快速上手集合框架的基本使用方法。
摘要由CSDN通过智能技术生成

Java基础语法 说说集合框架的简单学习思路

1. 自学集合的思路是什么?从哪几个方面快速学完集合框架知识?

在学习集合之前,我们先通过下面这段代码回忆一下数组的使用:

public class Array {
//根据下标查询元素
public static int queryElementByIndex(int[] arr, int index) {
	return arr[index];
}

//根据元素查找下标
public static int queryIndexByElement(int[] arr, int ele) {
	int index = -1; // 用来记录下标的变量
	// 1:遍历所有的元素
	for (int i = 0; i < arr.length; i++) {
		// 2 用你要查找的元素和所有的元素做==比较
		if (arr[i] == ele) {
			// 3 相等判断成立,记录当前元素的下标
			index = i;// 记录当前元素的下标
			break; // 后面元素就不用判断了
		}
	}
	return index;
}

//求数组的最大值
public static int maxValue(int[] arr) {
	// 1 假设第一个元素是最大值
	int max = arr[0];
	// 2:遍历数组
	for (int i = 1; i < arr.length; i++) {
		// 3 用这个个最大值和后面的元素做大于比较
		if (arr[i] > max) {
			// 4如果后面的元素比这个最大值还大,那么后面的元素就是最大值
			max = arr[i];
		}
	}
	return max;
}

//求数组的最小值
public static int minValue(int[] arr) {
	// 1 假设第一个元素是最小值
	int min = arr[0];
	// 2:遍历数组
	for (int i = 1; i < arr.length; i++) {
		// 3 用后面的元素这个最小值和做小于比较
		if (arr[i] < min) {
			// 4如果后面的元素比这个最小值还小,那么后面的元素就是最小值
			min = arr[i];
		}
	}
	return min;
}

/**
 *  给数组添加元素
 * @param arr
 * @param ele
 * @param index
 * @return  返回新的数组
 */
public static int[] addElement(int[] arr, int ele, int index) {
	

	// 1:新建一个数组,长度是原数组长度+1 数组扩容
	int[] newArr = new int[arr.length + 1];
	if(index>=0 && index<newArr.length){

		// 2 拿到下标为3的前面的元素,放到新数组按照0 1 2 顺序依次存放
		for (int i = 0; i < index; i++) {
			newArr[i] = arr[i];
		}

		// 3 把要添加的元素100放入新数组下标为3的位置
		newArr[index] = 100;

		// 4 拿到下标为3的后面的元素,放到新数组按照 4 5 顺序依次存放

		for (int i = index; i < arr.length; i++) {
			newArr[i + 1] = arr[i];
		}
	}else{
		System.out.println("索引超出范围");
		//超出范围,返回旧数组
		return arr;
	}		
	// 5:返回新数组
	return newArr;
}

/**
 * 根据下标删除元素
 * @param arr
 * @param index
 * @return  原数组
 */
public static int[] delEleByIndex(int[] arr,int index){
	
	if(index>=0 && index<arr.length){
		//1:找到下标为2的元素,后面的元素依次覆盖前面的元素
		for(int i = index;i<arr.length-1;i++){
			arr[i] = arr[i+1];
		}
		
		//2:把最后一位赋值为0
		arr[arr.length-1] = 0;
		
	}else{
		System.out.println("没有此下标");
	}
	//3 返回删除后的数组
	return arr;
}

/**
 * 根据元素删除元素
 * @param arr
 * @param ele
 * @return  下标
 */
public static int delEleByEle(int[] arr,int ele){
	   //1 :定义删除元素的下标
		int index = -1;
		
		//2:用你要删除的元素和数组里面的每一个元素做==比较
		for(int i = 0;i<arr.length;i++){
			if(ele==arr[i]){
			  //3:找到要删除的元素后,记录下当前元素的下标
				index = i;
				break; //后面就不要比较了
			}
		}
		//如果index是-1,直接返回,不需要移位
		if(index==-1){
			return index;
		}
		 //4:然后后面的下标依次向前移位
		for(int i = index;i<arr.length-1;i++){
			arr[i] = arr[i+1];
		}

		//5:把最后一位置为0
		arr[arr.length-1] = 0;
		//6  返回数组的下标即可
		return index;
}

//主函数
public static void main(String[] args) {
	int[] arr = { 10, 20, 300, 40, 50 };
	
	int index = delEleByEle(arr,300);
	if(index!=-1){
		for (int i : arr) {
			System.out.println(i);
		}
	}else{
		System.out.println("没有此元素");
	}
	
	/*arr = delEleByIndex(arr,2);
	for (int i : arr) {
		System.out.println(i);
	}
	*/
	
     /*int[] newArr = addElement(arr,100,-12);
	for (int i : newArr) {
		System.out.println(i);
	}*/
	
	/*int max = maxValue(arr);
	int min = minValue(arr);
	System.out.println("最大值是:" + max);
	System.out.println("最小值是:" + min);
	
	/
	* int index = 0; int ele = queryElementByIndex(arr,index);
	* System.out.println(“下标为”+index+“的元素是:”+ele);
	*/

	/*
	 * Scanner sc= new Scanner(System.in);
	 * System.out.println("请输入你要查询的元素值"); int ele = sc.nextInt(); //你要查找的元素
	 * int index = queryIndexByElement(arr,ele); // 4:没有匹配成功,没有此元素
	 * if(index!=-1){ System.out.println("元素"+ele+"的下标是:"+index); }else{
	 * System.out.println("没有此元素"); }
	 */

	}
}

这一系列的操作有没有很熟悉,不管是在刚开始学习的过程中还是平时在使用的过程中,你会发现基本上使用到数组也就这些操作了,总结一下其实就四个字:增删改查。反思片刻之后是否恍然大悟?其实java语言大部分的操作就是在对数据进行处理,而处理数据最简单且用的最多的方式其实就是增删改查了。

说到这里,相信大家就能明白我们接下来学习集合的切入点是什么了吧。没错,就是学习集合框架中每一种集合它对数据的处理方法有哪些,说白了就是集合如何对数据进行增删改查。OK,有了思路之后,我们开始进入集合框架的学习。

2. 简单了解集合框架的层次结构

Java的容器类主要由两个接口派生而出:Collection和Map,Collection和Map是Java集合框架的根接口,这两个接口又包含了一些子接口或实现类。通过Collection与Map接口导出其他子接口及实现类的框架示意图如下图所示:

其中Collection/List/Queue/Set/Map/Entry都是接口,只有最下面一层为以上接口的实现类。OK,现阶段我们知道它们之间有这样的关系就行了。那么要使用接口的方法,或者使用实现类的方法,相信大家都知道怎么调用了吧?如果到这还不知道怎么调用集合的方法,可以从新学习一下多态和面向对象的知识了。

3. 集合框架的增删改查

开始之前,我们先举个例子,就拿ArrayList开刀吧。在我们完全不知道一个集合拥有的任何方法的情况下,我们先想一想,这个时候我们要添加一个数据到里面去,首先思考他有没有对应的方法让我们直接放进去呢?如果有我们就直接调用,那么哪一个方法才是用来增加的呢?先用对象点一下看看:

List:

我们通过父类引用指向之类对象的方式创建了一个arrayList对象,一目了然,通过“对象点”的方式我们能看到ArrayList现在有这么多的方法,通过方法的名字,我们大概就能分析出很多方法的用处。比如add()方法,很显然是添加数据的意思,remove()是删除的意思,size()是大小的意思等等。

那么接下来的学习就很简单了,无非是一个一个的调用下面的方法,看看使用方法得到的结果是什么,然后一个一个的打印出来,就差不对掌握了集合的使用了。

我们再看看其他集合实现类的方法:

Set:

Map:

相信大家都发现了,其实几个集合的方法都大同小异,很多方法的名字都是一样的,也就是说,我们学会了一种集合,即学会了所有集合,当然是在基础的使用上。几种集合还是有一些本质上的区别的,比如他们存放数据的方式,存放数据的顺序,数据的遍历方式等。不过掌握了上面的学习方法和思路,已经给我们省出了很多的时间,这样我们就能花时间去研究他们的区别,了解每一种集合独特的方法了。

关于集合框架的一些特性,我将在下一篇文章为大家介绍。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

很萌の萌新

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值