Java LinkedList之KTV点歌系统
/**
* @author StormWangxhu
* @version 创建时间:2017年11月4日 上午9:50:42
*
*/
好好学习,天天向上!
今天来练习一下昨天学的ArrayList和LinkedList.
通过一个简单KTV点歌系统,达到练习LinkedList的方法使用。
KTV点歌系统介绍
功能介绍:
1、将歌曲置顶
2、将歌曲前移一位
3、退出系统
4、添加歌曲到列表
实现步骤:
1、
- (1)、为了指引用户操作,首先将各个指令打印到控制台。
- (2)、程序中需要创建一个集合作为歌曲列表,并向其添加一部分歌曲。
- (3)、由于控制台需要实时等待用户的输入,所以用while(true)来使程序一直处于等待用户输入指令的状态。
- (4)、可以通过Scanner类的nextInt()方法接受来自控制台的信息。
- (5)、可以使用switch语句,根据控制台传入的指令,判断应该执行的操作。
- (6)、通过LinkedList集合或ArrayList集合定义的方法操作歌曲列表。
代码实现:
package com.stormwang.ListTest;import java.util.Iterator;
import java.util.LinkedList;
import java.util.Scanner;/**
* @author StormWangxhu
* @version 创建时间:2017年11月4日 上午9:50:42
*
*/
/*** KTV点歌系统:* 主要应用 LinkedList 增删改查* 五个模块:* 模块一: 初始化列表* 模块二: 添加歌曲至列表* 模块三: 将歌曲至顶* 模块四: 将歌曲前移一位* 模块五 : 退出系统* */
public class KTVByLinkedList {public static void main(String[] args) {// TODO Auto-generated method stub//初始化列表System.out.println("---------------欢迎来到KTV点歌系统------------------");System.out.println("0------添加歌曲至列表");System.out.println("1------将歌曲至顶");System.out.println("2------将歌曲前移一位");System.out.println("3------退出系统");System.out.println("4------将歌曲乱序");//接受用户的输入System.out.println("请输入数字来实现相应功能:");//创建歌曲列表LinkedList linkedList = new LinkedList<>();//初始化列表addListMusic(linkedList);while (true) {Scanner scanner = new Scanner(System.in);int number = scanner.nextInt();switch(number) {case 0 : addMusic(linkedList);break;case 1 :setTop(linkedList);break;case 2 :setBefore(linkedList);break;case 3 :exit();break;default :System.out.println("您输入的数字有误,请重新输入!");break;} }}// 模块一 :初始化列表private static void addListMusic(LinkedList linkedList) {// TODO Auto-generated method stublinkedList.add("旧情人,我是时间的新欢");linkedList.add("奔跑");linkedList.add("感谢--龙井说唱");linkedList.add("完美生活");linkedList.add("执着");linkedList.add("我们的时光---赵雷");System.out.println("歌单中有歌曲 :"+linkedList.size()+" 首 !");System.out.println("歌单列表为:");Iterator iterator = linkedList.iterator();while (iterator.hasNext()) {Object object = (Object) iterator.next();System.out.println(object);} }//模块二: 实现将歌曲添加至列表private static void addMusic(LinkedList linkedList) {System.out.print("请输入您要添加歌曲的名称: ");Scanner scanner = new Scanner(System.in);String addMusicName = scanner.nextLine();//若存在,则不输入,反之添加成功if (((linkedList.indexOf(addMusicName)) ==-1)) { //不存在,则将歌曲添加至集合末尾linkedList.addLast(addMusicName);System.out.println("添加成功!");}else {System.out.println("您要添加得歌曲已在列表中!");}System.out.println("修改后歌单:");for (Object object : linkedList) {System.out.println(object);}}//模块五: 实现退出系统private static void exit() {System.out.println("感谢您的使用!");System.out.println("-----------您已退出系统-------------");//退出程序System.exit(0);}//模块四 : 将歌曲前移一位private static void setBefore(LinkedList linkedList) {System.out.print("请输入您要至前歌曲的名称:");Scanner scanner = new Scanner(System.in);String musicName = scanner.nextLine();//查找指定歌曲位置int position ;position = linkedList.indexOf(musicName);if (position==0) {System.out.println("已到顶部,无法前移!");}else if (position<0) {System.out.println("该歌曲不在列表中,请重新输入:");}else {//歌曲存在,且不在第一位,进行前移linkedList.remove(musicName);linkedList.add(position-1, musicName);System.out.println("前移一位成功!");System.out.println("当前歌曲名单列表:");Iterator iterator = linkedList.iterator();while (iterator.hasNext()) {Object object = (Object) iterator.next();System.out.println(object);}}//判断要至前歌曲是存在}//模块三 : 将歌曲置顶private static void setTop(LinkedList linkedList) {System.out.print("请输入将要置顶歌曲的名称:");Scanner scanner = new Scanner(System.in);String topMusicName = scanner.nextLine();//获得歌曲在列表中的位置int position ;position = linkedList.indexOf(topMusicName);//判断是否已在第一位if (position==0) {System.out.println("该歌曲已在顶部!");}if (position<0) {System.out.println("歌名输入有误,不存在该歌曲!");}else {linkedList.remove(topMusicName);linkedList.addFirst(topMusicName);/** 此处若为ArrayList 若要置顶元素* 代码如下:* arraylist.add(0,topMusicName);* * 区别:* ArrayList的add()方法需要指定元素的索引位置来实现* LinkedList的add()方法一步到位!* 这也体现出了LinkedList强大的增删功能!* */System.out.println("置顶成功!");}System.out.println("修改后的歌单:");for (Object object : linkedList) {System.out.println(object);}}}
运行后效果图:
再来一张:
特别提醒:
ArrayList和LinkedList在将歌曲置顶方法中,略有区别:ArrayList的add()方法代码:arraylist.add(0,topMusicName);LinkedList的add()代码:
linkedList.addFirst(topMusicName);区别:ArrayList的add()方法需要指定元素的索引位置来实现LinkedList的add()方法一步到位!
总结: 不急不躁,加油吧!
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
