集合!对!!这就是最细致的Java集合(List)学习总结①---Java学习总结

💁💁💁:【Java集合Set的学习总结

💁💁💁:【Java集合Map的学习总结

集合

一说到集合,有的人就会想到小学时候操场上,体育课代表喊:集合!这个时候本来零散做活动的大家都跑过来。站成了整齐的队伍。

 还有些小伙伴想到的可能是我们高中数学学习的集合:描述两个事物具有某种特性的整体。

目录

集合

应用场景:

集合框架的体系结构

List(列表)

ArrayList

案例:

案例练习:公告管理

总结



其实都不是这些,今天总结的Java中的集合

java中的集合是工具类,可以存储任意数量的具有共同属性的对象。就像一个容器。是不限数量的,它和java中的数组是不一样的,Java数组的存储空间是被限定的。

应用场景:

  • 无法预测存储数据的数量
  • 同时存储具有一对一关系的数据
  • 需要进行数据的增删
  • 数据的重复问题

 


集合框架的体系结构

  • Collection:比如存储学生信息,就将学生的类的对象存储到集合中去
  • Map:比方说购物车的信息。键:商品编号。值:商品的信息
  • List和Queue要求存储的数据有序且可以重复。set存储的数据则可以无序,不允许重复

List(列表)

  • List是元素有序并且可以重复的集合,成为序列
  • List可以精确控制每个元素的插入位置,或者删除某个位置的元素
  • List的两个主要实现类是ArrayListLinkList,这两个类的存储方式不一样,但是两个类的方法的作用是相同的

ArrayList

  • ArrayList的底层是由数组实现的
  • 长度动态增长,以满足应用程序的需求
  • 由于在在内存中的存储方式与数组一样,是一片连续的存储空间,所以在列表的尾部插入或删除数据非常有效。而在中间插入和删除数据则会消耗更多的资源,所以更适合查找和更新元素
  • ArrayList中的元素可以为null值

让我们打开Java API文档看看关于ArrayList的介绍信息💁💁点击打开Java API

集合的包不是java自带的没所以我们在编写程序时,需要倒入关于集合内所用到的包,java.util

可以看到,Collection方法中有:增加元素,移除元素,检测是否为空,查看集合数量,转化集合为数组等等等,一系列的方法介绍。

此外,List方法区别于Collection的是,有一个获取元素索引的方法,以及对元素列表进行排序的sort方法

让我们看看ArrayList这个实现类:

后面我们一一介绍和使用


让我们打开eclipse,然后新建一个kiligProj的项目,然后在这个项目下新建一个com.kilig.list的工程,最后创建一个ListDemoOne的新类。

案例:

用ArrayList存储编程语言的名称,并且输出来,其中名称包括:java,c,c++,Go和Swift。

1.首先,我们使用ArraryList创建了一个集合,然后用add()方法分别倒入元素到集合中,最后用size()方法查看集合中的元素。

那么,集合中的元素是怎样排列的呢?这个就是我们的元素在内存中的存储方式

2. 接下来,让我们使用遍历的方法输出这些元素。我们使用list中所提供的get()方法进行读取

3.移除集合中的C++,在这人我们使用前面介绍的 remove()方法。

  • 我们可以list.remove(2);
  • list.remove("C++");


案例练习:公告管理

企业或者电商网站都在自己的首页区域中发布公告信息:

需求:

  • 公告的添加和显示,在指定位置处插入,删除和修改公告

 分析过程:

  • 我们想实现数据的增删改查的功能,所以我们使用ArrayList实现这些操作。
  • 我们需要定义一些字符串来实现这些操作,因为我们前面所学的方法都是针对字符的操作
  • 此外,我们需要定义一个公告类,并且明确项目所需要的属性(编号,标题,添加人,创建时间),构造方法(赋值)和成员方法(获取内容,设置标题等)

公告类的添加和实现:

1.创建成员属性,在eclipse的com.kilig.set包下创建Notice类

package com.kilig.list;

import java.util.Date;

public class Notice {
//	成员属性
	private int id;
	private String title;
	private String creator;
	private Date creatTime;

}

2.使用变量创建构造方法 

3.生成get和set方法,便于需要时进行调用

4.定义测试类,将公告和操作放入测试类,在com.kilig.set下创建Noticetest测试包,进行测试执行。

4.1创建对象,生成公告

4.2添加公告,根据前面的学习我们知道增加数据使用的是 add(); 方法

4.3显示公告,

【注意】前面我们知道,noticeArrayList.get(i) 是读取显示,但是在这儿,我们所读取到的是我们公告的对象,当我们想显示标题的内容时,是需要调用我们前面定义的getTitle()方法。然而在这儿我们无法调用是为什么呢?

 这是因为get方法的返回值的类型是Object类型,而Object是所有类的父类,而这个类是不具有get方法的。具有这个方法的是Notice这个类,所以我们需要对它进行强制转换

将父类对象:noticeArrayList.get(i) 强制转换为子类Notice ---->(Notice)((noticeArrayList.get(i)))

这个时候我们在用现在的对象来调用getTiele()方法,就可以显示数据了!!!

让我们运行一下测试类,看看显示效果吧!

4.4同理,如果想将其他信息显示出来其实是一样的,去调用其他方法实现就行

5. 添加新的公告,我们使用add();方法

6.删除公告内容,我们之前使用的是remove()方法

7.修改公告2的内容为“快来点赞,评论,一起学习啦!!”,其实要修改的是Notice公告类的Title信息,所以我们需要先改Title的内容,在进行修改

8.下面是完整版的代码部分

8.1Notice.java类

package com.kilig.list;

import java.util.Date;

public class Notice {
//	成员属性
	private int id;
	private String title;
	private String creator;
	private Date creatTime;
//	构造方法
	public Notice(int id, String title, String creator, Date creatTime) {
		super();
		this.id = id;
		this.title = title;
		this.creator = creator;
		this.creatTime = creatTime;
	}
//	get &set方法
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getTitle() {
		return title;
	}
	public void setTitle(String title) {
		this.title = title;
	}
	public String getCreator() {
		return creator;
	}
	public void setCreator(String creator) {
		this.creator = creator;
	}
	public Date getCreatTime() {
		return creatTime;
	}
	public void setCreatTime(Date creatTime) {
		this.creatTime = creatTime;
	}
	
}

8.2 NoticeTest.java 测试类

package com.kilig.list;

import java.util.ArrayList;
import java.util.Date;

public class NoticeTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
//		创建对象,生成公告
		Notice one =new Notice(1, "欢迎来到Kilig的CSDN", "Administrator", new Date());
		Notice two =new Notice(2, "这是我的邮箱: bwenrui@gmail.com", "Administrator_Kilig", new Date());
		Notice three =new Notice(3, "一起学习,互相帮助!", "Administrator", new Date());
		
//		添加公告
		ArrayList noticeArrayList =new ArrayList();
		noticeArrayList.add(one);
		noticeArrayList.add(two);
		noticeArrayList.add(three);
//		显示公告内容
		System.out.println("===公告的内容===");
		for (int i = 0; i < noticeArrayList.size(); i++) {
			System.out.println((i+1)+". "+((Notice)(noticeArrayList.get(i))).getTitle());
		}
		System.out.println();
		System.out.println("++++++++++++++++++++++++++++++");
//		在第一条公告后发布新的内容
		Notice four =new Notice(4, "记得点赞,评论,收藏,三连!!", "Kilig", new Date());
		noticeArrayList.add(1, four);
			
		System.out.println("===增加后公告的内容===");
		for (int i = 0; i < noticeArrayList.size(); i++) {
			System.out.println((i+1)+". "+((Notice)(noticeArrayList.get(i))).getTitle());
		}
		System.out.println();
		System.out.println("++++++++++++++++++++++++++++++");
//		删除公告内容
		noticeArrayList.remove(3);
		System.out.println("===删除后公告的内容===");
		for (int i = 0; i < noticeArrayList.size(); i++) {
			System.out.println((i+1)+". "+((Notice)(noticeArrayList.get(i))).getTitle());
		}
		System.out.println();
		System.out.println("++++++++++++++++++++++++++++++");
//		修改公告2改为“快来点赞评论,一起学习啦!!”
//		修改公告2的title值
		four.setTitle("快来点赞评论,一起学习啦!!");
//		修改noticeArrayList的索引值
		noticeArrayList.set(1, four);
		System.out.println("===修改后公告的内容===");
		for (int i = 0; i < noticeArrayList.size(); i++) {
			System.out.println((i+1)+". "+((Notice)(noticeArrayList.get(i))).getTitle());
		}
		System.out.println();
		System.out.println("++++++++++++++++++++++++++++++");
		
	}
}

 


总结

上面的部分就是我们对ArrayList集合的学习,包括案列的完整分析和步骤,大家也可以实际来操作一下,感受一下常用方法的使用

下面我还会接着分享 set,Map集合的学习。

 

 

©️2020 CSDN 皮肤主题: 黑客帝国 设计师:上身试试 返回首页