首页 > 解决方案 > 如何使用特定参数搜索数组

问题描述

package Part01;

import java.util.ArrayList;

public class MP3Player implements iPlayer {
    private ArrayList<Tune> soundData;
    
    
    public MP3Player() {
        soundData =  new ArrayList<Tune>();
        
    }


    public boolean addTune(String title, String artist, int duration, Genre gen) {
        return true;
    }

    public String[] getTuneInfo() {
        return null;
    
    }

    public String[] getTuneInfo(Genre gen) {
        return null;
    }
}

如何为字符串参数指定的特定流派的 Tune 对象返回一个数组。

标签: java

解决方案


如果你想返回一个 Tune 对象的列表,你需要做的第一件事就是将方法的返回类型更改为

List<Tune> 

然后,在函数内部,一个简单的解决方案,而不是通过需要一些时间来理解的流 API,您可以编写如下代码:

public List<Tune> getTuneInfo(Genre gen){ 
   List<Tune> aux = new ArrayList<>(); 
   for (Tune t : soundData)
      if (t.getGenre().equals(gen))
          aux.add(t); 

   return aux; 
}

请注意,您可能需要为 Genre 对象编写一个 equals 实现,我假设它已在别处定义。


推荐阅读