Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.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 更改arraylist中的值_Java_Arraylist - Fatal编程技术网

Java 更改arraylist中的值

Java 更改arraylist中的值,java,arraylist,Java,Arraylist,我有一个布尔数组列表,其中填充了100个false 我想更改arraylist中的每个x值。同样是x=1,每隔一个值就会改变[假,真,假,真,假]如果x=2,每两个值就会改变一次。我已经做了几个小时了,但还是弄不懂。在这个网站上提问是我最后的选择 这是我所拥有的 public void changeValues(int x){ int d = x + 1; x-=1; int i = 0; while (x <= arrayList.size()){

我有一个
布尔数组列表
,其中填充了100个false

我想更改arraylist中的每个x值。同样是
x=1
,每隔一个值就会改变
[假,真,假,真,假]
如果
x=2
,每两个值就会改变一次。我已经做了几个小时了,但还是弄不懂。在这个网站上提问是我最后的选择

这是我所拥有的

public void changeValues(int x){

    int d = x + 1;
    x-=1;
    int i = 0;

    while (x <= arrayList.size()){

        if (arrayList.get(x) == false){

            arrayList.add(x,true);
        } else {

            arrayList.add(x,false);
        }
        x+=d; 
        if(x == arrayList.size()){ 
            break;
        } 
    } 
    System.out.print(arrayList);
 }
public void changeValues(int x){
int d=x+1;
x-=1;
int i=0;

而(xFirst,
add
在指定索引之后添加元素,而不是设置它

其次,您混合了x和loop index变量,这导致了完全错误的结果(我假设它抛出
ArrayIndexOutOfBoundException

其实实现非常简单:

for (int i = x; i < arrayList.size(); i += x+1) {
    arrayList.set(i, true);
    // or arrayList.set(i, !arrayList.get(i)) if you want to negate the value
}
for(int i=x;i
首先,
add
在指定索引后添加元素,而不是设置它

其次,您混合了x和loop index变量,这导致了完全错误的结果(我假设它抛出
ArrayIndexOutOfBoundException

其实实现非常简单:

for (int i = x; i < arrayList.size(); i += x+1) {
    arrayList.set(i, true);
    // or arrayList.set(i, !arrayList.get(i)) if you want to negate the value
}
for(int i=x;i
使用Set而不是add

Add将指定的元素追加到此列表的末尾或指定的索引处


Set将替换它。

使用Set而不是add

Add将指定的元素追加到此列表的末尾或指定的索引处

Set将替换它。

您必须修改该值以不添加新的val。使用以下代码以所述格式获取输出

   public void changeValues(int x){
        ArrayList<Boolean> list = new ArrayList<Boolean>(); 
        //From question -> that is filled with 100 falses.
        list.add(false);

        int listSize = list.size();
        for (int i = x; i < listSize; i += x + 1) { 
            list.set(i, true);            //Works for x=1
            if (x == 2 && i+1 < listSize) {  
                list.set(i + 1, true);    //Works for x=2
            }
        }
        System.out.println(list);
   }
x=2的输出

[false, false, true, true, false]
您必须修改该值才能不添加新的val。请使用以下代码以上述格式获取输出

   public void changeValues(int x){
        ArrayList<Boolean> list = new ArrayList<Boolean>(); 
        //From question -> that is filled with 100 falses.
        list.add(false);

        int listSize = list.size();
        for (int i = x; i < listSize; i += x + 1) { 
            list.set(i, true);            //Works for x=1
            if (x == 2 && i+1 < listSize) {  
                list.set(i + 1, true);    //Works for x=2
            }
        }
        System.out.println(list);
   }
x=2的输出

[false, false, true, true, false]
public void changeValues(int x){
int length=arrayList.size();
Collections.fill(arrayList,Boolean.TRUE);
对于(int a=0;a
虽然还没有测试代码,但我想这就是你想要的。希望它能有所帮助:)

publiccoodchangevalues(intx){
int length=arrayList.size();
Collections.fill(arrayList,Boolean.TRUE);
对于(int a=0;a

虽然还没有测试代码,但我想这就是您正在寻找的。希望它能有所帮助:)

使用Java 8,您可以通过在一个:

final int size=100;
最终整数间隔=x+1;
List List=IntStream.rangeClosed(1,大小)
.mapToObj(数值->数值%gap==0)
.collect(Collectors.toList());
系统输出打印项次(列表);

使用Java 8,您可以通过检查索引%x==0来制定解决方案,方法是:

final int size=100;
最终整数间隔=x+1;
List List=IntStream.rangeClosed(1,大小)
.mapToObj(数值->数值%gap==0)
.collect(Collectors.toList());
系统输出打印项次(列表);

(我建议您始终发布

import java.util.ArrayList;
导入java.util.List;
公开课考试{
最终静态int-arrayListSize=10;
静态列表arrayList=新建arrayList();
公共静态void main(字符串[]args){
变化值(3);
}
公共静态void changeValues(int changeValueStep){
//添加并检查changeValueStep是否为螺母0。
布尔值=假;
for(int i=0;i
(我建议您始终发布

import java.util.ArrayList;
导入java.util.List;
公开课考试{
最终静态int-arrayListSize=10;
静态列表arrayList=新建arrayList();
公共静态void main(字符串[]args){
变化值(3);
}
公共静态void changeValues(int changeValueStep){
//添加并检查changeValueStep是否为螺母0。
布尔值=假;
for(int i=0;i
请检查此项,我认为它将像您正在寻找的一样工作:

public class ChangeValue{
        public static void main(String[] args) {
                List arrayList = new ArrayList<Boolean>();
                for (int i = 0; i < 100; i++) {
                    arrayList.add(false);
                }
                System.out.println("Before:" + arrayList);
                for (int i = 0; i < 100; i++) {
                    arrayList.add(i,true);
                }
                new ChangeValue().changeValues(1, arrayList);

            }

            public void changeValues(int x, List<Boolean> arrayList) {
                int d = x+1;
                x -= x;
                System.out.println("ff:" + arrayList.size());
                while (x <= arrayList.size()) {
                    if (arrayList.get(x) == true) {
                        arrayList.add(x, false);
                    }
                    x += d;
                    if (x == arrayList.size()) {
                        break;
                    }
                }
                System.out.print("After:" + arrayList);
            }
        public static void main(String[] args) {
                List arrayList = new ArrayList<Boolean>();
                for (int i = 0; i < 100; i++) {
                    arrayList.add(false);
                }
                System.out.println("Before:" + arrayList);
                for (int i = 0; i < 100; i++) {
                    arrayList.add(i,true);
                }
                new StateFlowerBird().changeValues(1, arrayList);

            }

            public void changeValues(int x, List<Boolean> arrayList) {
                int d = x+1;
                x -= x;
                System.out.println("ff:" + arrayList.size());
                while (x <= arrayList.size()) {
                    if (arrayList.get(x) == true) {
                        arrayList.add(x, false);
                    }
                    x += d;
                    if (x == arrayList.size()) {
                        break;
                    }
                }
                System.out.print("After:" + arrayList);
            }

    }
公共类ChangeValue{
公共静态void main(字符串[]args){
List arrayList=新建arrayList();
对于(int i=0;i<100;i++){
arrayList.add(false);
}
System.out.println(“之前:“+arrayList”);
对于(int i=0;i<100;i++){
arrayList.add(i,true);
}
新的ChangeValue().ChangeValue(1,arrayList);
}
公共void changeValues(int x,列表arrayList){
int d=x+1;
x-=x;
System.out.println(“ff:+arrayList.size());

(x请检查此项,我认为它将像您所寻找的一样工作:

public class ChangeValue{
        public static void main(String[] args) {
                List arrayList = new ArrayList<Boolean>();
                for (int i = 0; i < 100; i++) {
                    arrayList.add(false);
                }
                System.out.println("Before:" + arrayList);
                for (int i = 0; i < 100; i++) {
                    arrayList.add(i,true);
                }
                new ChangeValue().changeValues(1, arrayList);

            }

            public void changeValues(int x, List<Boolean> arrayList) {
                int d = x+1;
                x -= x;
                System.out.println("ff:" + arrayList.size());
                while (x <= arrayList.size()) {
                    if (arrayList.get(x) == true) {
                        arrayList.add(x, false);
                    }
                    x += d;
                    if (x == arrayList.size()) {
                        break;
                    }
                }
                System.out.print("After:" + arrayList);
            }
        public static void main(String[] args) {
                List arrayList = new ArrayList<Boolean>();
                for (int i = 0; i < 100; i++) {
                    arrayList.add(false);
                }
                System.out.println("Before:" + arrayList);
                for (int i = 0; i < 100; i++) {
                    arrayList.add(i,true);
                }
                new StateFlowerBird().changeValues(1, arrayList);

            }

            public void changeValues(int x, List<Boolean> arrayList) {
                int d = x+1;
                x -= x;
                System.out.println("ff:" + arrayList.size());
                while (x <= arrayList.size()) {
                    if (arrayList.get(x) == true) {
                        arrayList.add(x, false);
                    }
                    x += d;
                    if (x == arrayList.size()) {
                        break;
                    }
                }
                System.out.print("After:" + arrayList);
            }

    }
公共类ChangeValue{
公共静态void main(字符串[]args){
List arrayList=新建arrayList();
对于(int i=0;i<100;i++){