2.5 Java面向对象(五)集合

本文深入讲解了Java集合框架中的List、Map和Set三种主要集合类型,包括它们的特点、使用场景及示例代码,并介绍了泛型集合的概念和用法。

一、关于集合

1、集合从本质上讲还是数组,是可以存储多个值的存储单元。

2、集合与数组的区别:

(1)数组必须指明长度,但是集合没有长度约束,集合中有多少个元素,那么集合的长度就是多少。

(2)数组的添加和删除不方便,集合可以轻松的实现添加和删除。

(3)集合可以添加任意类型的数据,任意类型的数据添加到集合中都变成了Object(基类)类型。


二、三种集合及其用法

1、List

(1)ArrayList数组集合,有序可重复

代码实例:

@SuppressWarnings({ "unchecked", "rawtypes" })
	@Test
	public void test01(){
		List list=new ArrayList();
		//原有的元素
		list.add(1);
		list.add(1.0);
		list.add("Hello");
		list.add(new Object());
		System.out.println(list.size());//输出集合长度,【输出结果4】
		for(Object o:list){
		    System.out.println(o);  //输出集合中所有元素
		}
		System.out.println("添加元素后");
		list.add(3,"World!");   //插入到第四个元素
		for(Object o:list){
		    System.out.println(o);  //输出集合中所有元素
		}
		System.out.println("删除第四个元素后");
		list.remove(3);  //删除第四个元素
		for(Object o:list){
		    System.out.println(o);  //输出集合中所有元素
		}
		
		System.out.println("迭代器Iterator");
		Iterator it=list.iterator();
		while(it.hasNext())  //输出所有元素
		{
			Object o=it.next();
			System.out.println(o);
		}
	}

(2)链式集合:和ArrayList集合没有太大区别。

链式集合四个独有的方法:addFirst、addLast、removeFirsr、removeLast

代码示例:

@SuppressWarnings({ "unchecked", "rawtypes" })
	@Test
	public void test02(){
		LinkedList list=new LinkedList();
		list.add(1);
		list.add(1.0);
		list.add('c');
		list.add("World!");
		System.out.println(list.get(list.size()-1));//输出结果【World!】
		System.out.println(list.get(3)); //输出结果【World!】
		list.addFirst("First");
		System.out.println(list.get(0)); //输出结果【First】
		list.removeFirst();
		System.out.println(list.get(0)); //输出结果【1】
		
	}


2、Map:是一种key-value的集合

代码示例

@SuppressWarnings({ "unchecked", "rawtypes" })
	@Test
	public void test03()
	{
		/*
		 * Map集合
		 * Map集合是一种key-value的集合
		 */
		Map map=new HashMap();
		map.put(1,"小明");
		map.put(2,"小红");
		System.out.println(map.get(1));   //输出结果【小明】
		System.out.println(map.keySet());//输出结果【[1, 2]】
		System.out.println(map.values());//输出结果【[小明, 小红]】
		System.out.println(map);//输出结果【{1=小明, 2=小红}】
	}

3、Set

代码示例

@SuppressWarnings({ "rawtypes", "unchecked" })
	@Test
	public void test04()
	{
		Set set=new HashSet();
		set.add(1);
		set.add(1.0);
		set.remove(1.0);
		System.out.println(set.size());  //输出结果【1】
		Object[] o=new Object[10];
		set.toArray(o);
		System.out.println(o[0]);//输出结果【1】
	}


三、泛型集合

1、区别:集合是可以添加任意类型的数据,但是泛型集合只能添加规定类型的数据

2、泛型集合其实是对加入到集合中的数据做了类型约束的集合

3、代码示例:

@Test
	public void test06()
	{
		List<User> list=new ArrayList<User>();
		list.add(new User());
		System.out.println(list.get(0)); //输出结果【cn.demo.User@5b37e0d2】
		
		User u=new User(1001,"root","123456","男","广东广州");
		Map<Integer,User> map=new HashMap<Integer,User>();
		map.put(u.getId(),u);
		System.out.println(map.get(1001).getUsername()); //输出结果【root】
	}


Java面向对象相关知识:


2.1 Java面向对象(一)类、对象、属性、方法

2.2 Java面向对象(二)三大特征

2.3 Java面向对象(三)接口、静态、常量

2.4 Java面向对象(四)值类型和引用类型

2.5 Java面向对象(五)集合


1)普通用户端(全平台) 音乐播放核心体验: 个性化首页:基于 “听歌历史 + 收藏偏好” 展示 “推荐歌单(每日 30 首)、新歌速递、相似曲风推荐”,支持按 “场景(通勤 / 学习 / 运动)” 切换推荐维度。 播放页功能:支持 “无损音质切换、倍速播放(0.5x-2.0x)、定时关闭、歌词逐句滚动”,提供 “沉浸式全屏模式”(隐藏冗余控件,突出歌词与专辑封面)。 多端同步:自动同步 “播放进度、收藏列表、歌单” 至所有登录设备(如手机暂停后,电脑端打开可继续播放)。 音乐发现与管理: 智能搜索:支持 “歌曲名 / 歌手 / 歌词片段” 搜索,提供 “模糊匹配(如输入‘晴天’联想‘周杰伦 - 晴天’)、热门搜索词推荐”,结果按 “热度 / 匹配度” 排序。 歌单管理:创建 “公开 / 私有 / 加密” 歌单,支持 “批量添加歌曲、拖拽排序、一键分享到社交平台”,系统自动生成 “歌单封面(基于歌曲风格配色)”。 音乐分类浏览:按 “曲风(流行 / 摇滚 / 古典)、语言(国语 / 英语 / 日语)、年代(80 后经典 / 2023 新歌)” 分层浏览,每个分类页展示 “TOP50 榜单”。 社交互动功能: 动态广场:查看 “关注的用户 / 音乐人发布的动态(如‘分享新歌感受’)、好友正在听的歌曲”,支持 “点赞 / 评论 / 转发”,可直接点击动态中的歌曲播放。 听歌排行:个人页展示 “本周听歌 TOP10、累计听歌时长”,平台定期生成 “全球 / 好友榜”(如 “好友中你本周听歌时长排名第 3”)。 音乐圈:加入 “特定曲风圈子(如‘古典音乐爱好者’)”,参与 “话题讨论(如‘你心中最经典的钢琴曲’)、线上歌单共创”。 (2)音乐人端(创作者中心) 作品管理: 音乐上传:支持 “无损音频(FLAC/WAV)+ 歌词文件(LRC)+ 专辑封面” 上传,填写 “歌曲信息
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值