Java 使用jcommander将元组存储在列表中
我试图将字符串元组存储在arraylist中,但在终端中我输入了以下命令Java 使用jcommander将元组存储在列表中,java,arraylist,tuples,jcommander,Java,Arraylist,Tuples,Jcommander,我试图将字符串元组存储在arraylist中,但在终端中我输入了以下命令 > java Main -P A,60 B,90 C,50 D,40 E,70 F,100 G,1000 ,但当程序找到逗号时,元素被一分为二, 所以我得到了这个输出 A 60 B 90 C 50 D 40 E 70 F 100 G 1000 A,60 B,90 C,50 D,40 E,70 F,100 G,1000 我试图得到这个输出 A 60 B 90 C 50 D 40 E 70 F 100 G 1000
> java Main -P A,60 B,90 C,50 D,40 E,70 F,100 G,1000
,但当程序找到逗号时,元素被一分为二,
所以我得到了这个输出
A
60
B
90
C
50
D
40
E
70
F
100
G
1000
A,60
B,90
C,50
D,40
E,70
F,100
G,1000
我试图得到这个输出
A
60
B
90
C
50
D
40
E
70
F
100
G
1000
A,60
B,90
C,50
D,40
E,70
F,100
G,1000
我怎么能修好它?
这是我的密码
import java.util.ArrayList;
import java.util.List;
import com.beust.jcommander.JCommander;
import com.beust.jcommander.Parameter;
class Main {
@Parameter(names={"-P"}, variableArity=true)
public List<String> values = new ArrayList<String>();
public static void main(String ... argv) {
Main main = new Main();
JCommander.newBuilder()
.addObject(main)
.build()
.parse(argv);
main.run();
}
public void run() {
for (String val: values) {
System.out.println(val);
}
}
}
import java.util.ArrayList;
导入java.util.List;
导入com.beust.jcommander.jcommander;
导入com.beust.jcommander.Parameter;
班长{
@参数(名称={“-P”},变量性=真)
公共列表值=新的ArrayList();
公共静态void main(字符串…argv){
Main Main=新Main();
JCommander.newBuilder()
.addObject(主)
.build()
.parse(argv);
main.run();
}
公开募捐{
for(字符串值:值){
系统输出打印项次(val);
}
}
}
JCommander默认情况下使用逗号拆分参数:有关详细信息。这就是导致您出现问题的原因。解决此问题的一种方法是提供一个不拆分的IParameterSplitter
:
public class Main {
private static final class NonSplittingSpliter implements IParameterSplitter {
public List<String> split(String value) {
return Collections.singletonList(value);
}
}
@Parameter(names={"-P"},
splitter = NonSplittingSpliter.class,
variableArity = true)
public List<String> values = Collections.emptyList();
public static void main(String ... argv) {
Main main = new Main();
JCommander.newBuilder()
.addObject(main)
.build()
.parse(argv);
main.run();
}
public void run() {
for (String val: values) {
System.out.println(val);
}
}
}
公共类主{
私有静态最终类NonSplitingSpliter实现IPParameterSplitter{
公共列表拆分(字符串值){
返回集合。singletonList(值);
}
}
@参数(名称={“-P”},
拆分器=非拆分拆分拆分器.class,
可变性=真)
公共列表值=Collections.emptyList();
公共静态void main(字符串…argv){
Main Main=新Main();
JCommander.newBuilder()
.addObject(主)
.build()
.parse(argv);
main.run();
}
公开募捐{
for(字符串值:值){
系统输出打印项次(val);
}
}
}
这应该能解决你的问题