You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java 8如何实现带动态参数的Mapper函数?

解决方案

要实现将cities和codes列表中对应位置的元素配对传入getDesc方法,你可以通过遍历索引的方式关联两个列表的元素,具体实现如下:

修改后的核心逻辑

在main方法中,将原来的流处理代码替换为:

List<String> descs = IntStream.range(0, codes.size())
    .mapToObj(i -> getDesc(cities.get(i), codes.get(i)))
    .distinct()
    .filter(desc -> desc != null && !desc.isEmpty())
    .collect(Collectors.toList());

完整修改代码

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;

public class TEST{

     public static String getDesc(String domain, String code){
         String ret = "";
         
         switch(domain){
             case "AAA" :    
                 if(code.equals("0")){
                     ret = "AAA_Descr_0";
                 }else if(code.equals("1")){
                     ret = "AAA_Descr_1";
                 }
             break;

             case "BBB" :    
                 if(code.equals("0")){
                     ret = "BBB_Descr_0";
                 }else if(code.equals("1")){
                     ret = "BBB_Descr_1";
                 }
             break;
         }
         
         return ret;
     }
     
     public static void main(String []args){
       List<String> cities = Arrays.asList("AAA","AAA","BBB", "BBB");
       List<String> codes = Arrays.asList("0","1","0","1");
       List<String> descs = IntStream.range(0, codes.size())
            .mapToObj(i -> getDesc(cities.get(i), codes.get(i)))
            .distinct()
            .filter(desc -> desc != null && !desc.isEmpty())
            .collect(Collectors.toList());
       
        descs.stream().forEach(System.out::println);
     }
}

逻辑说明

  • IntStream.range(0, codes.size())生成从0到列表长度-1的索引流,保证能遍历到每一对对应的city和code
  • mapToObj(i -> getDesc(cities.get(i), codes.get(i)))通过索引同时获取两个列表中同位置的元素,传入getDesc生成描述文本
  • 保留原有的distinct()去重和filter()过滤空值逻辑,最终得到符合要求的描述列表

执行后输出与预期一致:

AAA_Descr_0
AAA_Descr_1
BBB_Descr_0
BBB_Descr_1

注意:需确保cities和codes两个列表长度相同,否则会抛出IndexOutOfBoundsException

内容的提问来源于stack exchange,提问作者prokopis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 05:03:36