java怎么把一个list 转换成可变数量参数传入

在 Java 中,如果你有一个 List<T>,并且需要把它传给一个方法的可变参数(varargs) ,可以通过 toArray 来实现。关键点是:可变参数在底层就是一个数组。

import java.util.List;

import java.util.ArrayList;

public class VarargsExample {

public static void main(String\[\] args) {

// 假设我们有一个List<String>

List<String> list = new ArrayList<>();

list.add("A");

list.add("B");

list.add("C");

**//调用一个接受可变参数的方法

printStrings(list.toArray(new String0));

}

*//*可变参数方法

public static void printStrings(String... strings) {

for (String s : strings) {

System.out.println(s);

}

}

}

关键点说明

  • list.toArray(new String0) 会返回一个 String\[\],这是可变参数的底层类型。
  • 如果你的方法是 children(DslTestPlanChild... children),而你有 List<DslTestPlanChild>,可以这样:

children(list.toArray(new DslTestPlanChild0))

总结

  • List → Array → Varargs 是标准做法。
  • new T0 是惯用写法,JVM 会自动分配正确大小的数组。
java 复制代码
package com.example.dsl.runner;

import com.example.dsl.model.Step;
import com.example.dsl.curl.CurlParser;
import com.example.dsl.model.ParsedCurl;
import static us.abstracta.jmeter.javadsl.JmeterDsl.*;
import us.abstracta.jmeter.javadsl.core.controllers.DslTransactionController;
import us.abstracta.jmeter.javadsl.core.threadgroups.DslDefaultThreadGroup;
import us.abstracta.jmeter.javadsl.http.*;
import java.nio.file.*;
import java.util.*;

public class CsvStepRunner {

    public static List<Step> loadCsv(String csvPath) {
        List<Step> list = new ArrayList<>();
        try {
            List<String> lines = Files.readAllLines(Paths.get(csvPath));
            lines.remove(0);
            for (String l : lines) {
                String[] p = l.split(",");
                Step s = new Step();
                s.type = p[0];
                s.curl = p[1];
                s.extractPath = p.length>2 ? p[2] : "";
                s.extractVar = p.length>3 ? p[3] : "";
                s.assertPath = p.length>4 ? p[4] : "";
                s.assertExpected = p.length>5 ? p[5] : "";
                list.add(s);
            }
        } catch (Exception e) { throw new RuntimeException(e); }
        return list;
    }

    public static DslDefaultThreadGroup buildPlanFromCsv(String csvPath) {
        List<Step> steps = loadCsv(csvPath);
        List<DslHttpSampler> samplers = new ArrayList<>();

        for (Step s : steps) {
            ParsedCurl pc = CurlParser.parse(s.curl);
            DslHttpSampler sampler = httpSampler(pc.url).method(pc.method);
            pc.headers.forEach(sampler::header);
            if (pc.body != null) sampler.body(pc.body);

            if (s.extractPath != null && !s.extractPath.isEmpty()) {
                sampler.children(jsonExtractor(s.extractVar, s.extractPath));
            }
            if (s.assertPath != null && !s.assertPath.isEmpty()) {
                sampler.children(jsonAssertion(s.assertPath).matches(s.assertExpected));
            }
            samplers.add(sampler);
        }

        System.out.println(samplers.toString().getClass());
        DslTransactionController t = transaction("my tr", samplers.toArray(new DslHttpSampler[0]));

        return  threadGroup(1, 1,  transaction("", t)).children(
                        jsr223PostProcessor(c ->System.out.println(c.prevMap())),
                        jsr223PostProcessor(c ->System.out.println(c.prevRequest())),
                        jsr223PostProcessor(c ->System.out.println(c.prevResponse()))
        );
    }

}
 
相关推荐
pt10439 分钟前
网络自动化Python课程:Netconf与Restconf及Cisco自动化配置实验
网络·python·自动化
slacker-kian22 分钟前
[笔记]-什么是相似性搜索?
python·ai·向量·相似性搜索·点积·l2 距离·余弦相似度和距离
阿童木写作27 分钟前
跨境电商图片翻译工具,批量翻译视频字幕还免费
python·音视频
sukioe29 分钟前
城智连响:基于 LangGraph 与四库分层架构的城市公共设施智能报修与派单系统
人工智能·python·ai·架构·langchain
我的xiaodoujiao31 分钟前
Django 基础知识详细图文教程 4-Django 视图定义与使用
开发语言·数据库·后端·测试工具·django·sqlite
l1t31 分钟前
DeepSeek总结的DuckDB在 CI 中为 release 和 glibc CLI 构建启用 LTO - #24225
开发语言·数据库·ci/cd·duckdb
whitelbwwww33 分钟前
c++运行RKNN
开发语言·c++
LabVIEW开发36 分钟前
使用 LabVIEW 获取文件的创建日期:从内置函数到 Windows API 封装
网络·windows·labview·labview知识·labview功能·labview程序
2601_9620702340 分钟前
差异基因富集分析(R语言——GO&KEGG&GSEA)
开发语言·golang·r语言
布莱克60542 分钟前
栈(Stack)详解:定义、作用、应用场景及与队列的区别(附 C/C++ 代码)
c语言·开发语言·c++·