java编写 用linklist或Arraylist集合,实现编写一个一个模拟KTV点歌的程序,实现歌曲的添加,置顶,前移,后移,删除等操作
时间: 2024-12-16 20:31:55 浏览: 5
好的,我们可以使用Java中的LinkedList或ArrayList来创建一个简单的KTV点歌系统。这里我将以LinkedList为例,因为它支持高效的插入和删除操作。
首先,我们需要定义一个Song类来表示歌曲,包含名称(name)和歌手(singer)等属性:
```java
public class Song {
private String name;
private String singer;
public Song(String name, String singer) {
this.name = name;
this.singer = singer;
}
// getters and setters
}
```
然后,我们创建一个LinkedList来存储歌曲列表:
```java
import java.util.LinkedList;
public class KaraokePlayer {
private LinkedList<Song> songList = new LinkedList<>();
// 添加歌曲方法
public void addSong(Song song) {
songList.addLast(song);
}
// 置顶歌曲方法
public void moveToTop(Song song) {
if (songList.contains(song)) {
songList.remove(song);
songList.addFirst(song);
}
}
// 前移歌曲
public void moveSong(int index, int steps) {
if (index >= 0 && index < songList.size() && steps != 0) {
Song temp = songList.get(index);
for (int i = 0; i < Math.abs(steps); i++) {
if (steps > 0) {
songList.add(index + i, songList.remove(index));
} else {
songList.add(index - i, songList.remove(index));
}
}
songList.add(index, temp);
}
}
// 后移歌曲
public void moveSong(int index, int steps) {
moveSong(index, -steps);
}
// 删除歌曲
public void deleteSong(Song song) {
songList.removeIf(s -> s.equals(song));
}
}
```
在这个类中,我们实现了歌曲的添加、置顶、前移、后移和删除操作。`addSong`直接在链表末尾添加,`moveToTop`从链表中移除并添加到开头,`moveSong`通过替换和交换元素进行前后移动,`deleteSong`则是根据歌曲对象进行删除。
现在你可以用以下方式实例化并使用这个KTVPlayer:
```java
KaraokePlayer player = new KaraokePlayer();
player.addSong(new Song("Dance Monkey", "Tones and I"));
// ...其他操作
```
阅读全文