Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在JMeter Beanshell中对数字数组进行排序_Java_Jmeter_Beanshell - Fatal编程技术网

Java 如何在JMeter Beanshell中对数字数组进行排序

Java 如何在JMeter Beanshell中对数字数组进行排序,java,jmeter,beanshell,Java,Jmeter,Beanshell,我不熟悉在JMeter脚本中使用Beanshell/Java。我的JMeter Beanshell处理器中有以下代码 int count = Integer.parseInt(vars.get("student_id_RegEx_matchNr")); String delimiter = ","; StringBuffer sb = new StringBuffer(); for(int i=1;i<=25;i++) { sb.append(vars.get("student_id_R

我不熟悉在JMeter脚本中使用Beanshell/Java。我的JMeter Beanshell处理器中有以下代码

int count = Integer.parseInt(vars.get("student_id_RegEx_matchNr"));
String delimiter = ",";
StringBuffer sb = new StringBuffer();
for(int i=1;i<=25;i++) { 
sb.append(vars.get("student_id_RegEx_" + i));
if (i == count){
break; //to eliminate comma after the array
}else {
sb.append(delimiter);
}
}
vars.putObject("myUnsortedVar",sb.toString());
我希望它像这样进行数字排序,并存储在一个名为“sortedVar”的新变量中


我可以使用什么代码对其进行排序,并将其存储在新变量中,以便在接下来的JMeter请求中使用排序后的数组。谢谢您的帮助。

我想在BeanShell中您可以使用与Java中相同的方法。一旦填充StringBuffer,就没有简单的方法对内容进行排序。因此,我会先将内容存储到一个中间的
ArrayList
(或者更好的
ArrayList
,如果您总是得到数字),然后使用
集合对其进行排序。排序
,然后使用另一个
for
循环,使用逗号分隔符将列表内容放入StringBuffer。

我想在BeanShell中可以使用与Java中相同的方法。一旦填充StringBuffer,就没有简单的方法对内容进行排序。因此,我会先将内容存储到一个中间的
ArrayList
(或者更好的
ArrayList
,如果您总是得到数字),然后使用
集合对其进行排序。排序
,然后使用另一个
for
循环,使用逗号分隔符将列表内容放入StringBuffer。

使用
sb.toString()=“5,6,2,3,1,4”

  • 使用
    String::split()
    String
    转换为
    String[]
  • 用于对数组进行排序
  • 使用
    Arrays.toString()
    String[]
    转换为
    String

sb.toString()=“5,6,2,3,1,4”

  • 使用
    String::split()
    String
    转换为
    String[]
  • 用于对数组进行排序
  • 使用
    Arrays.toString()
    String[]
    转换为
    String


你可以这样做:

char [] responseCharArray = vars.get("myUnsortedVar").toCharArray();
Arrays.sort(responseCharArray);
String mySortedString = Arrays.toString(responseCharArray);    
vars.put("mySortedVar", mySortedString.replaceAll("\\,\\,","").replaceAll(" ",""));

有关JMeter中Beanshell脚本的更多信息,请参阅指南。您可以执行以下操作:

char [] responseCharArray = vars.get("myUnsortedVar").toCharArray();
Arrays.sort(responseCharArray);
String mySortedString = Arrays.toString(responseCharArray);    
vars.put("mySortedVar", mySortedString.replaceAll("\\,\\,","").replaceAll(" ",""));

有关JMeter中Beanshell脚本的更多信息,请参阅指南。正如OndreJM所建议的,您需要更改方法。不要将值存储在StringBuffer中,而是将它们存储在ArrayList中,然后使用
Collections.sort
对其进行排序。下面的代码应该适合您

// create an ArrayList
ArrayList strList = new ArrayList();
for (int i=0;i<25; i++){
strList.add(vars.get("student_id_RegEx_" + String.valueOf(i+1)));
}
// sort this ArrayList
Collections.sort(strList);
// use StringBuilder to build String from ArrayList
StringBuilder builder = new StringBuilder();
for (String id: strList){
builder.append(id);
builder.append(",");
}
builder.deleteCharAt(builder.length()-1);
// finally put in variable using JMeter built in 'vars.put'
// do not use vars.putObject, as you can not send object as request parameter
vars.put("sortedVar", builder.toString());
//创建一个ArrayList
ArrayList strList=新的ArrayList();

对于(int i=0;i,正如OndreJM所建议的,您需要改变您的方法。不要将值存储在StringBuffer中,而是将它们存储在ArrayList中,然后使用集合进行排序。排序
对其进行排序。下面的代码应该适合您

// create an ArrayList
ArrayList strList = new ArrayList();
for (int i=0;i<25; i++){
strList.add(vars.get("student_id_RegEx_" + String.valueOf(i+1)));
}
// sort this ArrayList
Collections.sort(strList);
// use StringBuilder to build String from ArrayList
StringBuilder builder = new StringBuilder();
for (String id: strList){
builder.append(id);
builder.append(",");
}
builder.deleteCharAt(builder.length()-1);
// finally put in variable using JMeter built in 'vars.put'
// do not use vars.putObject, as you can not send object as request parameter
vars.put("sortedVar", builder.toString());
//创建一个ArrayList
ArrayList strList=新的ArrayList();

对于(int i=0;iI在..vars.putObject(“myUnsortedVar”,sb.toString())之后删除;并添加字符串[]sortedArray=Arrays.sort(sb.toString().split(“,”);vars.putObject(“mySortedVar”,Arrays.toString(sortedArray));不工作。抛出错误。2015/09/03 08:27:57错误-jmeter.util.BeanShellInterpreter:调用bsh方法时出错:评估源文件:内联计算:
int count=Integer.parseInt(vars.get(“学生id\u RegEx\u matchNr”));String delim…'':类型化变量声明:Void initializer.2015/09/03 08:27:57 WARN-jmeter.protocol.java.sampler.BeanShellSampler:org.apache.jorphan.util.JMeterException:调用bsh方法时出错:eval源文件:内联求值:
int count=Integer.parseInt(vars.get(“student_id_RegEx_matchNr”));String delim…“”:类型化变量声明:无效初始值设定项。我删除了以下..vars.putObject(“myUnsortedVar”,sb.toString());并添加了字符串[]sortedArray=Arrays.sort(sb.toString().split)(,”);vars.putObject(“mySortedVar”,Arrays.toString(sortedArray));不工作。抛出错误。2015/09/03 08:27:57错误-jmeter.util.BeanShellInterpreter:调用bsh方法时出错:评估源文件:内联计算:
int count=Integer.parseInt(vars.get(“学生id\u RegEx\u matchNr”));String delim…'':类型化变量声明:Void initializer.2015/09/03 08:27:57 WARN-jmeter.protocol.java.sampler.BeanShellSampler:org.apache.jorphan.util.JMeterException:调用bsh方法时出错:eval源文件:内联求值:
int count=Integer.parseInt(vars.get(“student_id_RegEx_matchNr”));String delim…“”:类型化变量声明:Void initializer。最初,这段代码在执行时给了我错误。然后我从最后一行删除了“replaceAll()”,它在变量中给了我这个在我的情况下无效的输出:[,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,3,4,4,5,6,6,7,7,8,9]您删除规范化outputDmitri的行是非常聪明的,正如我提到的,当我使用该行时JMeter会返回错误。当我删除它时,它会给出上面的结果。我共享了此信息,以便您可以查看是否需要在最后一行中修复某些内容。我是Java初学者,请原谅我问了一些基本问题。谢谢。我得到了错误这是…ERROR-jmeter.util.BeanShellInterpreter:调用bsh方法时出错:eval源文件:内联计算:``int count=Integer.parseInt(vars.get(“student\u id\u RegEx\u matchNr”);字符串delim…''令牌解析错误:第16行第53列出现词法错误。遇到:“,”(44),在:\”之后\\“对我来说似乎是复制粘贴问题,我的代码中没有
”\“\”\,“
。最初,此代码在执行时给了我错误。然后我从最后一行中删除了“replaceAll()”,它以变量形式给了我此输出,在我的情况下无效:[,,,,,,,,,,,,,,,,,,,,,0,1,1,1,1,1,1,1,1,1,1,2,2,2,3,4,4,5,5,5,6,6,7,7,8,8,9]删除规范化outputDmitri的行是非常聪明的,正如我提到的,当我使用该行时JMeter会返回错误。当我删除它时,会给出上面的r
// create an ArrayList
ArrayList strList = new ArrayList();
for (int i=0;i<25; i++){
strList.add(vars.get("student_id_RegEx_" + String.valueOf(i+1)));
}
// sort this ArrayList
Collections.sort(strList);
// use StringBuilder to build String from ArrayList
StringBuilder builder = new StringBuilder();
for (String id: strList){
builder.append(id);
builder.append(",");
}
builder.deleteCharAt(builder.length()-1);
// finally put in variable using JMeter built in 'vars.put'
// do not use vars.putObject, as you can not send object as request parameter
vars.put("sortedVar", builder.toString());