/**
* @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 stub
linkedList.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()方法一步到位!
總結: 不急不躁,加油吧!