java之集合ArrayList

Posted hongfei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java之集合ArrayList相关的知识,希望对你有一定的参考价值。

编程题,定义歌曲类,属性:歌曲名、歌手名、播放时长(int 类型),定义play方法显示歌曲信息。
1、添加10首歌到ArrayList集合中
2、遍历所有的歌曲,显示歌曲信息
3、输入歌曲名,在集合中查找该歌曲
4、输入整数,删除该位置的歌曲
5、找出播放时间最长的歌曲

Music类
public class Music {

//    1、定义歌曲类,属性:歌曲名、歌手名、播放时长(int 类型),定义play方法显示歌曲信息。

// 1、添加10首歌到ArrayList集合中
// 2、遍历所有的歌曲,显示歌曲信息
// 3、输入歌曲名,在集合中查找该歌曲
// 4、输入整数索引,删除该位置的歌曲
// 5、找出播放时间最长的歌曲
// 6、将所有歌曲复制到LinkedList集合中

private String name;//歌手名
private String song;//歌曲名
private int time;//播放时长
@Override
public int hashCode() {
    final int prime = 31;
    int result = 1;
    result = prime * result + ((song == null) ? 0 : song.hashCode());
    return result;
}
@Override
public boolean equals(Object obj) {
    if (this == obj)
        return true;
    if (obj == null)
        return false;
    if (getClass() != obj.getClass())
        return false;
    Music other = (Music) obj;
    if (song == null) {
        if (other.song != null)
            return false;
    } else if (!song.equals(other.song))
        return false;
    return true;
}
public Music() {
    super();
}
public Music(String song, String name, int time) {
    super();
    this.name = name;
    this.song = song;
    this.time = time;
}
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
public String getSong() {
    return song;
}
public void setSong(String song) {
    this.song = song;
}
public int getTime() {
    return time;
}
public void setTime(int time) {
    this.time = time;
}
@Override
public String toString() {
    return "Music [name=" + name + ", song=" + song + ", time=" + time + "]";
}
public void play(){
    System.out.println("歌手名为:"+getName()+";歌曲名为:"+"《"+getSong()+"》"+";播放时长为:"+getTime()+"min\\n");

}

}

TestMusic类

import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;

public class TestMusic {

public static void main(String[] args) {

// 1、添加10首歌到ArrayList集合中

    ArrayList<Music> list;
    list = new ArrayList<Music>();
    list.add(new Music("肖邦即兴幻想曲", "李云迪", 5));
    list.add(new Music("第2号匈牙利狂想曲", "李斯特", 12));
    list.add(new Music("天鹅湖", "柴可夫斯基", 6));
    list.add(new Music("巴赫C大调前奏曲", "巴赫", 3));
    list.add(new Music("Nocturne NO.1 in B-Flat-Minor,op.9 - 1", "肖邦", 7));
    list.add(new Music("拉赫玛尼诺夫第二钢琴协奏曲", "朗朗", 19));
    list.add(new Music("Liebestraum", "李斯特", 8));
    list.add(new Music("舒伯特小夜曲", "吕思清", 6));
    list.add(new Music("升C小调圆舞曲", "肖邦", 7));
    list.add(new Music("柴可夫斯基第一钢琴协奏曲", "朗朗", 10));

// 2、遍历所有的歌曲,显示歌曲信息

    System.out.println("首先遍历所有的歌曲,显示歌曲信息:\\n");
    Iterator<Music> iterator = list.iterator();
    while (iterator.hasNext()) {
        iterator.next().play();
    }

// 3、输入歌曲名,在集合中查找该歌曲

    System.out.println("假设输入柴一钢协,在集合中查找该歌曲:\\n");
    boolean flage = true;
    for (Music music : list) {
        if(music.getSong().equals("柴可夫斯基第一钢琴协奏曲")){
            flage = false;
            System.out.print("此歌曲已找到!歌曲信息为:\\n");music.play();
        }
    }
    if(flage){
        System.out.println("抱歉,没有找到此歌曲");
    }

// 4、输入整数索引,删除该位置的歌曲

    System.out.println("输入索引号1,删除歌曲《第2号匈牙利狂想曲》\\n");
    list.remove(1);
    //list.get(1).play();

// 5、找出播放时间最长的歌曲

    int max = list.get(0).getTime();
    for (int i = 0; i < list.size(); i++) {
        if(list.get(i).getTime() > max){
            max = list.get(i).getTime();
        }
    }
   // System.out.println(max);
    for (Music music : list) {
        if(music.getTime() == max){
            System.out.print("以上所有歌曲中,时间最长的歌曲为:");music.play();
        }
    }

// 6、将所有歌曲复制到LinkedList集合中

    System.out.println("完成以上操作后,将所有歌曲复制到LinkedList集合中,结果为:");
    LinkedList<Music> linkedList = new LinkedList<>();
    linkedList.addAll(list);
    Iterator<Music> iterator2 = linkedList.iterator();
    while (iterator2.hasNext()) {
        iterator2.next().play();
    }
}

}

学习参考链接:
https://blog.csdn.net/u013343...
https://blog.csdn.net/weixin_...

以上是关于java之集合ArrayList的主要内容,如果未能解决你的问题,请参考以下文章

java之List_ArrayList集合使用(去重复)

java之List_ArrayList集合使用(去重复)

Java并发多线程编程——集合类线程不安全之ArrayList的示例及解决方案

java集合系列之ArrayList源码分析

Java之ArrayList类(集合)

Java集合之ArrayList