如何在Java8中转换多个If-Else梯形图
我拥有如何在Java8中转换多个If-Else梯形图,java,java-8,Java,Java 8,我拥有字符串的数组,格式为 [field1, Expected: 60,got: 70,field2, Expected: 80,got: 90, field3, Expected: 90,got: 70] 从这个数组我将它构建到列表中 List<HashMap<String,String>> getErroMap(String [] err){ List<HashMap<String,String>> listErrorMap =
字符串的数组
,格式为
[field1, Expected: 60,got: 70,field2, Expected: 80,got: 90, field3, Expected: 90,got: 70]
从这个数组
我将它构建到列表中
List<HashMap<String,String>> getErroMap(String [] err){
List<HashMap<String,String>> listErrorMap = new ArrayList<HashMap<String,String>>();
HashMap<String,String> errorMap=null;
byte count = 0;
for (String arr : err) {
if(count == 0 ) {
errorMap = new HashMap<String, String>();
errorMap.put("object",arr.replaceAll(".import", ""));
}else if (count >0) {
String key = count ==1?"Expected":"Found";
if(arr.contains(":")) {
String[] tokens = arr.split(":");
errorMap.put(key, tokens[1]);
}else {
errorMap.put(key, arr);
}
}
if(count >= 2) {
listErrorMap.add(errorMap);
count = 0 ;
}else {
count++;
}
}
return listErrorMap;
}
由于我是Java8
新手,我想我正在编写大量代码来实现简单的事情。如何使用java8
改进此功能要获得所需的结果,您需要返回List
,这不是理想的干净结果
最好按照建议创建一个自定义类,并创建List
。
例如:
public class myClass{
public String obj;
public int expected;
public int found;
public myClass(String obj, int expected, int found){
this.obj = obj;
this.expected = expected;
this.found = found;
}
}
然后,您可以创建一个循环:
private List<myClass> convertToMap(String[] info){
ArrayList<myClass> newList = new ArrayList<myClass>();
for(int i = 0; i < info.length; i += 3){
if(i < info.length){
newList.add(new myClass(info[i],
Integer.parseInt(info[i+1]),
Integer.parseInt(info[i+2])));
}
}
return newList;
}
私有列表转换映射(字符串[]信息){
ArrayList newList=新的ArrayList();
对于(int i=0;i
要获得您想要的结果,您需要返回列表
,该列表并不理想
最好按照建议创建一个自定义类,并创建List
。
例如:
public class myClass{
public String obj;
public int expected;
public int found;
public myClass(String obj, int expected, int found){
this.obj = obj;
this.expected = expected;
this.found = found;
}
}
然后,您可以创建一个循环:
private List<myClass> convertToMap(String[] info){
ArrayList<myClass> newList = new ArrayList<myClass>();
for(int i = 0; i < info.length; i += 3){
if(i < info.length){
newList.add(new myClass(info[i],
Integer.parseInt(info[i+1]),
Integer.parseInt(info[i+2])));
}
}
return newList;
}
私有列表转换映射(字符串[]信息){
ArrayList newList=新的ArrayList();
对于(int i=0;i
以下是您想要的
private List<Map<String, String>> getErrorMap(String[] inputs) {
if (inputs.length % 3 != 0) {
return new ArrayList<>();
}
final AtomicInteger counter = new AtomicInteger(0);
return Arrays.stream(inputs)
.collect(Collectors.groupingBy(s -> counter.getAndIncrement() / 3))
.values()
.stream()
.map(strings -> {
Map<String, String> map = new HashMap<>();
map.put("object", strings.get(0));
map.put("Expected", strings.get(1).split(":")[1]);
map.put("Found", strings.get(2).split(":")[1]);
return map;
}).collect(Collectors.toList());
}
输出:
[{Expected= 60, Found= 70, object=field1}, {Expected= 80, Found= 90, object=field2}, {Expected= 90, Found= 70, object=field3}]
下面是你想要的
private List<Map<String, String>> getErrorMap(String[] inputs) {
if (inputs.length % 3 != 0) {
return new ArrayList<>();
}
final AtomicInteger counter = new AtomicInteger(0);
return Arrays.stream(inputs)
.collect(Collectors.groupingBy(s -> counter.getAndIncrement() / 3))
.values()
.stream()
.map(strings -> {
Map<String, String> map = new HashMap<>();
map.put("object", strings.get(0));
map.put("Expected", strings.get(1).split(":")[1]);
map.put("Found", strings.get(2).split(":")[1]);
return map;
}).collect(Collectors.toList());
}
输出:
[{Expected= 60, Found= 70, object=field1}, {Expected= 80, Found= 90, object=field2}, {Expected= 90, Found= 70, object=field3}]
与其说是一个列表
,不如把它转换成列表
?这是一个简单的用例来处理,所以不用考虑使用类,从映射的列表中,我可以读取所有对象并写入PDF。你能在getErrorMap(String[]err)中发布一些err输入吗
?我投票决定结束这个问题,因为它在上更合适。@TongChen是的,这是问题的第二行。与其说是列表
,不如把它转换成列表
?这是一个简单的用例,所以不要考虑使用类,从这个Map
列表中,我可以读取所有对象并写入PDF。你能在getErrorMap(String[]err)
中发布一些err输入吗?我投票结束这个问题,因为它在上更合适。@TongChen是的,这是问题的第二行。