如何使用特定参数搜索数组 包装件01; 导入java.util.ArrayList; 公共类MP3Player实现iPlayer{ 私有ArrayList soundData; 公共MP3Player{ soundData=新阵列列表; } 公共布尔addTuneString标题、字符串艺术家、整型持续时间、流派gen{ 返回true; } 公共字符串[]getTuneInfo{ 返回null; } 公共字符串[]GetTuneInfoGen{ 返回null; } }

如何使用特定参数搜索数组 包装件01; 导入java.util.ArrayList; 公共类MP3Player实现iPlayer{ 私有ArrayList soundData; 公共MP3Player{ soundData=新阵列列表; } 公共布尔addTuneString标题、字符串艺术家、整型持续时间、流派gen{ 返回true; } 公共字符串[]getTuneInfo{ 返回null; } 公共字符串[]GetTuneInfoGen{ 返回null; } },java,Java,如何为String参数指定的特定类型的Tune对象返回数组。如果要返回Tune对象列表,首先需要将方法的返回类型更改为 List<Tune> 然后,在函数内部是一个简单的解决方案,您可以编写如下代码,而不是通过需要一些时间才能理解的流API: public List<Tune> getTuneInfo(Genre gen){ List<Tune> aux = new ArrayList<>(); for (Tune t : so

如何为String参数指定的特定类型的Tune对象返回数组。

如果要返回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; 
}
请注意,可能您需要为流派对象编写一个equals实现,我假设它在别处定义。

此处很有用,因为生成的代码比for循环更具表现力。如果按标识进行比较不适用于应用程序,并且需要按属性进行比较,则需要确保覆盖Tune类上的.equals,而for循环也会存在同样的问题

public List<Tune> getTuneInfo(Genre gen) {
   return soundData.stream()
     .filter(tune -> tune.getGenre().equals(gen))
     .collect(Collectors.toUnmodifiableList());
}

如果您不希望结果的用户修改返回的Tune对象,则可以添加映射操作,以生成要返回的对象副本。

Arrays.binarySearch​T[]a,int-fromIndex,int-toIndex,T-key,comparatory您需要使用Java流API来实现这一点:您做了什么来实现这一点?听起来你好像在试图让别人帮你解决家庭作业。