基于SSM框架的JavaWeb程序设计之认识ArrayList与HashMap

系列文章目录

第一章:基于SSM框架的JavaWeb程序设计之环境搭建https://blog.csdn.net/qq_57930222/article/details/130398327?spm=1001.2014.3001.5501

第二章:基于SSM框架的JavaWeb程序设计之Hello World项目实践https://blog.csdn.net/qq_57930222/article/details/130398327?spm=1001.2014.3001.5501

第三章:基于SSM框架的JavaWeb程序设计之初步了解JSPhttps://blog.csdn.net/qq_57930222/article/details/130425917?spm=1001.2014.3001.5501

第四章:基于SSM框架的JavaWeb程序设计之初识Servlethttps://blog.csdn.net/qq_57930222/article/details/130521505?spm=1001.2014.3001.5501

第五章:基于SSM框架的JavaWeb程序设计之Cookie与Sessionhttps://blog.csdn.net/qq_57930222/article/details/130553002?spm=1001.2014.3001.5501

第六章:基于SSM框架的JavaWeb程序设计之认识ArrayList与HashMaphttps://blog.csdn.net/qq_57930222/article/details/130571787?spm=1001.2014.3001.5501

第七章:基于SSM框架的JavaWeb程序设计之无JDBC版学生管理系统(一)https://blog.csdn.net/qq_57930222/article/details/130595527?spm=1001.2014.3001.5501

第八章:基于SSM框架的JavaWeb程序设计之无JDBC版学生管理系统(二)https://blog.csdn.net/qq_57930222/article/details/130595527?spm=1001.2014.3001.5501

第九章:基于SSM框架的JavaWeb程序设计之将无JDBC版学生管理系统升级为Mybatis版本 icon-default.png?t=N4HBhttps://blog.csdn.net/qq_57930222/article/details/130753473?spm=1001.2014.3001.5501


目录

系列文章目录

前言:

一、集合概述

1.单列集合

2.双列集合

二、ArrayList

1.常用方法介绍

2.ArrayList初始化

3.ArrayList案例

 三、HashMap

1.常用方法简介

2.HashMap初始化

3.HashMap案例

总结:


前言:

        本系列文章是假设大家有了一定的Java基础之后,在学习的。这里我们简单介绍一下Java里面两个比较常用的类型ArrayList和HashMap。

        为了可以在程序中,保存数目不确定的对象,Java提供了一系列特殊的类,这些类可以存储任意类型的对象,并且长度可变,这些类被称系统称为集合。集合类都位于java.util包中,用时必须导包。


一、集合概述

集合按照其存储结构可以分为两大类,单列集合和双列集合。

1.单列集合

        单列集合用于存储一系列符合某种规则的元素。本章只介绍ArrayList集合类。

2.双列集合

        双列集合用于存储具有键(key)、值(value)映射关系的元素。本章只介绍HashMap集合类。

二、ArrayList

        ArrayList内部封装了一个长度可变的数组对象,当存入的元素超过数组长度时,ArrayList会在内存中分配一个更大的数组,来存储这些元素,因此可以将ArrayList集合看作一个长度可变的数组。

1.常用方法介绍

方法声明功能描述
boolean add(Object o)向集合中添加一个元素
Object get(int index)返回集合索引index处
Object remove(int index)删除index索引处的元素
int size()获取该集合元素个数
boolean idEmpty()判断该集合是否为空

2.ArrayList初始化

(1)导包:import java.util.ArrayList;

(2)ArrayList初始化

        推荐指定数组元素类型,如下(Type代表元素类型)

ArrayList<Type> list = new ArrayList<Type> ();

        例如:

ArrayList<String> list = new ArrayList<String> ();        //指定了存储元素为String类型

        当然也可以指定自己定义的其他类,例如自定义有学生类Student,ArrayList也可以存储学生类型对象。例如:

ArrayList<Student> list = new ArrayList<Student> ();        

3.ArrayList案例

(1)案例1,包装类

新建Java project,命名ArrayList1,新建包命名csdn.ah.ArrayList,包下新建类命名ArrayList1.java

 

  

编写代码

 运行测试

(2)案例2,自定义类

在包csdn.ah.ArrayList下新建类,命名为ArrayList2

 编写代码

package csdn.ah.ArrayList;
import java.util.ArrayList;
public class ArrayList2 {
	public static void main(String[] args) {
		//创建ArrayList类
		ArrayList<Person> list = new ArrayList<Person> ();
		
		//通过有参构造函数实例化Person类
		Person p1 = new Person("张三",19);
		Person p2 = new Person("李四",20);
		Person p3 = new Person("王五",21);
		Person p4 = new Person("赵六",22);
		
		//将实例化的对象添加到集合中
		list.add(p1);
		list.add(p2);
		list.add(p3);
		list.add(p4);
		
		//打印集合的长度
		System.out.println("集合的长度为:" + list.size());
		
		//打印出集合中指定位置的元素
		System.out.println("集合中第2个位置的元素是:" + list.get(1));
		
		//移除集合中指定位置的元素
		list.remove(1);
		
		//再次打印该位置元素
		System.out.println("集合中第2个位置的元素是:" + list.get(1));
		
		//打印输出集合元素与集合长度,查看集合是是否有什么变化
		for (Person i : list) {
			System.out.println(i);
		}
		System.out.println("集合的长度为:" + list.size());
	}
}

class Person{
	private String name;
	private int age;
	
	public Person() {
		
	}
	public Person(String name,int age) {
		this.name = name;
		this.age = age;
	}
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	
	public String toString() {
		return "Person[name=" + name + ",age=" + age + "]";
	}
}

运行测试

 三、HashMap

        HashMap是一种双列集合,它的每一个元素都包含一个键对象Key和值对象Value,键和值对象中存在一种映射关系,称为映射。

        从HashMap中访问元素时只要指定了Key,就能找到对应得Value。

1.常用方法简介

方法声明功能描述
void put(Object Key, Object Value)将指定的值与此映射中的指定键关联(可选操作)
Object get(Object Key)返回指定键所映射的值,如果此映射不包含改键的映射关系,则返回null
V remove(Object Key)根据键删除对应的值,返回被删除的值
int size()返回集合中的键值对的个数

2.HashMap初始化

(1)导包:import java.util.HashMap;

(2)HashMap初始化推荐指定关键字和值类型如下(k代表元素关键字(Key)的类型,v代表元素值(Value)的类型):

        HashMap<k,v>map = new HashMap<k,v> ();

例如:

HashMap<String,Object> map = new HashMap<String,Object>();

        指定了存储元素的关键字为String类型,值为Object类型

3.HashMap案例

(1)HashMap

新建Dynamic项目命名为HashMap,新建包csdn.ah.HashMap,包下新建类hashMap

编写代码

package csdn.ah.HashMap;
import java.util.HashMap;
public class hashMap {
	public static void main(String[] args) {
		//创建HashMap对象
		HashMap<String,String> map = new HashMap<String,String>();
		//存储键和值
		map.put("1", "张三");
		map.put("2", "李四");
		map.put("3", "王五");
		map.put("4", "赵六");
		
		//根据键获取值
		System.out.println("1:" + map.get("1"));
		System.out.println("2:" + map.get("2"));
		System.out.println("3:" + map.get("3"));
		System.out.println("4:" + map.get("4"));
		
		//存储相同的键
		map.put("3", "甲一");
		
		//打印查看键为3的值现在为多少
		System.out.println("3:" + map.get("3"));
	}
}

运行测试

(2)存储跟学生有关的数据,包括(学号、姓名、性别、年龄、班级)

新建一个类命名为hashMap2.java,位于包csdn.ah.HashMap下

 编写代码

package csdn.ah.HashMap;
import java.util.HashMap;
import java.util.ArrayList;
public class hashMap2 {
	public static void main(String[] args) {
		//创建HashMap集合
		HashMap<String,Object> map1 = new HashMap<String,Object>();
		HashMap<String,Object> map2 = new HashMap<String,Object>();
		HashMap<String,Object> map3 = new HashMap<String,Object>();
		//为map集合添加键值对
		map1.put("id", 1);
		map1.put("name", "张三");
		map1.put("sex", "男");
		map1.put("age", 21);
		map1.put("class", "一班");
		
		map2.put("id", 2);
		map2.put("name", "李四");
		map2.put("sex", "女");
		map2.put("age", 22);
		map2.put("class", "二班");
		
		map3.put("id", 3);
		map3.put("name", "王五");
		map3.put("sex", "男");
		map3.put("age", 23);
		map3.put("class", "三班");
		
		//创建ArrayList集合
		ArrayList<Object> list = new ArrayList<Object>();
		//将HashMap对象添加到ArrayList集合中
		list.add(map1);
		list.add(map2);
		list.add(map3);
		
		//将list中的数据打印出来查看
		for(Object i : list) {
			System.out.println(i);
		}
	}
}

运行测试

(3)static静态

        在定义一个类时,只是在描述某事物的特征和行为,并没有产生具体的数据。只有通过new关键字创建该类的实例对象时,才会开辟栈内存及堆内存,在堆内存中要保存对象的属性时,每个对象会有自己的属性。

        如果希望某些属性被所有对象共享,就必须将其声明为static属性。除了修饰属性,static关键字还可以修饰成员方法。

静态属性:

        如果在Java程序中使用static修饰属性,则该属性称为静态属性(也称全局属性)。静态属性可以使用类名直接访问,访问格式如下:

        类名.属性名

        静态属性案例:

                新建Dynamic项目命名为Static,新建包csdn.ah.Static,包下新建类命名为static1.java

                编写代码

package csdn.ah.Static;

public class static1 {
	public static void main(String[] args) {
		//实例化Student对象
		Student stu1 = new Student("张三",19);
		Student stu2 = new Student("李四",20);
		Student stu3 = new Student("王五",21);
		
		//打印这三个对象
		stu1.info();
		stu2.info();
		stu3.info();
	}
}

//创建Student类
class Student{
	private String name;
	private int age;
	public static String school = "A大学";
	
	public Student() {
		
	}
	
	public Student(String name,int age) {
		this.name = name;
		this.age = age;
	}
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getSchool() {
		return school;
	}
	public void setSchool(String school) {
		this.school = school;
	}
	
	public void info() {
		System.out.println("姓名:" + this.name + ",年龄:" + this.age + ",school:" + school);
	}
}

                测试运行

                 我们对代码稍作修改,集体修改他们所在的大学

                运行查看结果:

静态方法:

        如果想要用类中的成员方法,就需要先将这个类实例化。而在实际开发时,开发人员有时希望在不创建对象的情况下,通过类名就可以调用某个方法,要实现这样的效果,只需要在成员方法上加上static关键字,使用static关键字修饰的方法通常成为静态方法。

        静态方法也可以通过类名访问,具体如下:

        类名.方法名

                静态方法案例:

                        在包csdn.ah.Static下新建类命名为static2

                        编写代码

package csdn.ah.Static;

public class static2 {
	public static void main(String[] args) {
		//实力化Student1类
		Student1 stu4 = new Student1("张三",19);
		Student1 stu5 = new Student1("李四",20);
		Student1 stu6 = new Student1("王五",21);
		
		//调用Student1类的静态方法setSchool()集体修改大学名
		Student1.setSchool("C大学");
		
		//调用共有方法info()打印这三个对象
		stu4.info();
		stu5.info();
		stu6.info();
	}
}

//创建Student类
class Student1{
	private String name;
	private int age;
	private static String school = "A大学";
	
	public Student1() {
		
	}
	
	public Student1(String name,int age) {
		this.name = name;
		this.age = age;
	}
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public static String getSchool() {
		return school;
	}
	public static void setSchool(String school) {
		Student1.school = school;
	}
	
	public void info() {
		System.out.println("姓名:" + this.name + ",年龄:" + this.age + ",school:" + school);
	}
}

                        运行测试

静态代码块:

        在Java类中,用static关键字修饰的代码块被称为静态代码块。当类被加载时,静态代码块会执行,由于类只加载一次,因此静态代码块只执行一次。

        在程序中,通常使用静态代码块对类的成员变量进行初始化。

        静态代码块案例:

                在包csdn.ah.static下新建类,命名为static3

                编写代码

package csdn.ah.Static;

public class static3 {
	public static void main(String[] args) {
		//实例化Student3类
		Student3 stu7 = new Student3("张三",19);
		Student3 stu8 = new Student3("李四",20);
		Student3 stu9 = new Student3("王五",21);
		
		//打印这三个对象
		stu7.info();
		stu8.info();
		stu9.info();
	}
}

//创建Student类
class Student3{
	private String name;
	private int age;
	public static String school;
	static {
		System.out.println("进入静态代码块");
		
		//初始化school字段
		school = "A大学";
	}
	
	public Student3() {
		System.out.println("无参构造函数");
	}
	
	public Student3(String name,int age) {
		System.out.println("有参构造函数");
		this.name = name;
		this.age = age;
	}
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public static String getSchool() {
		return school;
	}
	public static void setSchool(String school) {
		Student3.school = school;
	}
	
	public void info() {
		System.out.println("姓名:" + this.name + ",年龄:" + this.age + ",school:" + school);
	}
}

                运行测试

总结:

        本章内容我们学习/复习了Java有关的两个复杂类型,ArrayList、HashMap,顺便学习了静态属性、静态方法、静态代码块三个知识,这都将为我们之后的内容打下基础。下一章我们将进入到项目实战之中,编写一个使用静态页面编写一个学生管理系统,该部分内容过多我们将分多期实现。关注我,获取最新内容。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值