Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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 将字符串数组转换为数组列表_Java_Arrays_List_For Loop_Instantiation - Fatal编程技术网

Java 将字符串数组转换为数组列表

Java 将字符串数组转换为数组列表,java,arrays,list,for-loop,instantiation,Java,Arrays,List,For Loop,Instantiation,我有一个带有名称和id的字符串数组,我需要将该字符串数组转换为对象的列表 这是我的代码: private List<ObjectAttribute> getDtls(String newVal) { ObjectAttribute object = new ObjectAttribute(); List<ObjectAttribute> objLst = new ArrayList<ObjectAttribute>(); String[

我有一个带有名称和id的
字符串
数组,我需要将该
字符串
数组转换为对象的
列表

这是我的代码:

private List<ObjectAttribute> getDtls(String newVal) {
    ObjectAttribute object = new ObjectAttribute();
    List<ObjectAttribute> objLst = new ArrayList<ObjectAttribute>();
    String[] newImageVal = [step0005.jpg, 172B6846-0073-4E5B-B10A-DDD928994EA6, step0003.jpg, FBC8D143-2CD7-47E6-B323-31A0928A9338]
    for (int i = 0; i <= newImageVal.length - 1; i++) {
        object.setImageName(newImageVal[i]);
        object.setImageId(newImageVal[++i]);
        objLst.add(object);
    }
    return objLst;
}
private List getDtls(字符串newVal){
ObjectAttribute对象=新的ObjectAttribute();
List objLst=new ArrayList();
字符串[]newImageVal=[step0005.jpg,172B6846-0073-4E5B-B10A-DDD928994EA6,step0003.jpg,FBC8D143-2CD7-47E6-B323-31A0928A9338]
对于(int i=0;imove

在for循环中:

for (int i = 0; i <= newImageVal.length - 1; i++) {
    ObjectAttribute object = new ObjectAttribute();
    object.setImageName(newImageVal[i]);
    object.setImageId(newImageVal[++i]);
    objLst.add(object);
}
for(int i=0;imove

在for循环中:

for (int i = 0; i <= newImageVal.length - 1; i++) {
    ObjectAttribute object = new ObjectAttribute();
    object.setImageName(newImageVal[i]);
    object.setImageId(newImageVal[++i]);
    objLst.add(object);
}
for(int i=0;i
private List getDtls(String newVal){
List objLst=new ArrayList();
字符串[]newImageVal=[step0005.jpg,172B6846-0073-4E5B-B10A-DDD928994EA6,step0003.jpg,FBC8D143-2CD7-47E6-B323-31A0928A9338]
//字符串分隔符=“,”;
//newImageVal=newVal.split(分隔符);
对于(int i=0;i
private List getDtls(String newVal){
List objLst=new ArrayList();
字符串[]newImageVal=[step0005.jpg,172B6846-0073-4E5B-B10A-DDD928994EA6,step0003.jpg,FBC8D143-2CD7-47E6-B323-31A0928A9338]
//字符串分隔符=“,”;
//newImageVal=newVal.split(分隔符);

对于(int i=0;i或您可以使用
streams
方式执行类似操作:

AtomicInteger ai = new AtomicInteger(); 
List<ObjectAttribute> objLst = Arrays.stream(newImageVal)
.map(img-> {
   ObjectAttribute object = new ObjectAttribute();
   object.setImageName(img);
   object.setImageId(ai.getAndIncrement()); 
   return obj;
 }).collect(Collectors.toList())
AtomicInteger ai=新的AtomicInteger();
列表objLst=Arrays.stream(newImageVal)
.map(img->{
ObjectAttribute对象=新的ObjectAttribute();
object.setImageName(img);
setImageId(ai.getAndIncrement());
返回obj;
}).collect(收集器.toList())

或者您可以使用
方式执行类似操作:

AtomicInteger ai = new AtomicInteger(); 
List<ObjectAttribute> objLst = Arrays.stream(newImageVal)
.map(img-> {
   ObjectAttribute object = new ObjectAttribute();
   object.setImageName(img);
   object.setImageId(ai.getAndIncrement()); 
   return obj;
 }).collect(Collectors.toList())
AtomicInteger ai=新的AtomicInteger();
列表objLst=Arrays.stream(newImageVal)
.map(img->{
ObjectAttribute对象=新的ObjectAttribute();
object.setImageName(img);
setImageId(ai.getAndIncrement());
返回obj;
}).collect(收集器.toList())

正如@StefanBeike所写,问题的根本原因是,在for循环之前只实例化一次对象,然后继续重写其属性。在for循环中移动实例化(
new
)可以修复该功能

然而,除此之外,在for循环体中增加for循环变量是一种非常糟糕的做法。因此,您模糊了您的意图,您将得到可读性较差、更难维护且更容易被以后的更改破坏的代码

并且主要条件应该是
i
,以安全地处理数组大小。(100%确保没有获得
ArrayIndexOutOfBoundsException

有很多更好的方法

在for循环“header”中增加2:

for(int i=0;i
使用while循环而不是for循环:

int i = 0;
while (i < newImageVal.length-1) {
    ObjectAttribute object = new ObjectAttribute();
    object.setImageName(newImageVal[i++]);
    object.setImageId(newImageVal[i++]);
    objLst.add(object);
}
inti=0;
而(i
正如@StefanBeike所写,问题的根本原因是,在for循环之前只实例化一次对象,然后继续重写其属性。在for循环中移动实例化(
new
)可以修复该功能

然而,除此之外,在for循环体中增加for循环变量是一种非常糟糕的做法。因此,您模糊了您的意图,您将得到可读性较差、更难维护且更容易被以后的更改破坏的代码

并且主要条件应该是
i
,以安全地处理数组大小。(100%确保没有获得
ArrayIndexOutOfBoundsException

有很多更好的方法

在for循环“header”中增加2:

for(int i=0;i
使用while循环而不是for循环:

int i = 0;
while (i < newImageVal.length-1) {
    ObjectAttribute object = new ObjectAttribute();
    object.setImageName(newImageVal[i++]);
    object.setImageId(newImageVal[i++]);
    objLst.add(object);
}
inti=0;
而(i
在for循环体中再次递增for循环变量是一种非常糟糕的做法。根据您的经验,您不应该教初学者这样的东西:)@HonzaZidek这是OP的一个错误,它只是复制粘贴的。因此您不必告诉StefanBeike,而是告诉OP;)@利诺:我认为我们在回答问题时有一定的责任。我们不仅要纠正他们的功能错误,还要纠正他们的设计错误。因此,初学者经常将答案作为知识来源。@HonzaZidek您可以自由发布自己的答案,这就指出了这一点。因此,我们鼓励不同的答案,所有答案都是相同的如果你从OP改进代码,可能会得到很多积极的结果feedback@HonzaZidek是的,当然…,但我的答案与原始问题有关。与某些代码样式指南问题或最佳实践无关。在for循环体中再次递增for循环变量是一种非常糟糕的做法。您可以使用经验不应该教给初学者这样的东西:)@HonzaZidek这是一个复制粘贴的OP的错误。所以你不必告诉StefanBeike,而是告诉OP;)@利诺:我认为我们在回答问题时有一定的责任。我们不仅要纠正他们的功能错误,还要纠正他们的设计错误。因此,初学者经常将答案作为知识来源。@HonzaZidek你可以自由发表自己的答案,这指出