如何选择ArrayList中元素的索引并更改其中一个属性?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何选择ArrayList中元素的索引并更改其中一个属性?相关的知识,希望对你有一定的参考价值。

我想在我的ArrayList中更改元素的特定属性,但我不知道如何。我想将我的一个对象上的'infected'属性更改为true。

我已经尝试在我的ArrayList上使用'set'方法将我选择的元素中的一个属性设置为其他东西,但由于某种原因,它不起作用。

rectangles.set(5,infected=false); //I want to change the 'infected' property at element 5 to true.

public class RectangleL
    int sX,sY;
    Color color;
    int speed;int height; int width;int velX=0;int velY=0;;
    public boolean infected=false;
//blah
答案

get列表中的相关对象,然后直接操作它:

rectangles.get(5).infected = true;
另一答案

看看这个:

public class Main 

    public static class RectangleL 
        int sX, sY;
        String color;
        int speed;
        int height;
        int width;
        int velX = 0;
        int velY = 0;;
        public boolean infected = false;

        public int getsX() 
            return sX;
        

        public void setsX(int sX) 
            this.sX = sX;
        

        public int getsY() 
            return sY;
        

        public void setsY(int sY) 
            this.sY = sY;
        

        public String getColor() 
            return color;
        

        public void setColor(String color) 
            this.color = color;
        

        public int getSpeed() 
            return speed;
        

        public void setSpeed(int speed) 
            this.speed = speed;
        

        public int getHeight() 
            return height;
        

        public void setHeight(int height) 
            this.height = height;
        

        public int getWidth() 
            return width;
        

        public void setWidth(int width) 
            this.width = width;
        

        public int getVelX() 
            return velX;
        

        public void setVelX(int velX) 
            this.velX = velX;
        

        public int getVelY() 
            return velY;
        

        public void setVelY(int velY) 
            this.velY = velY;
        

        public boolean isInfected() 
            return infected;
        

        public void setInfected(boolean infected) 
            this.infected = infected;
        

        @Override
        public String toString() 
            return "RectangleL [sX=" + sX + ", sY=" + sY + ", color=" + color + ", speed=" + speed + ", height="
                    + height + ", width=" + width + ", velX=" + velX + ", velY=" + velY + ", infected=" + infected
                    + "]";
        

    

    public static void main(String[] args) 
        List<RectangleL> rectangles = new ArrayList<>();
        // Let say you created a object with infected false;
        RectangleL rectangleL = new RectangleL();
        rectangleL.setColor("Red");
        rectangles.add(0, rectangleL); 
        System.out.println(rectangles.toString()); // old value
        rectangles.get(0).infected = true; // replace by new value 
        System.out.println(rectangles.toString()); // new value
    


输出:

[RectangleL [sX=0, sY=0, color=Red, speed=0, height=0, width=0, velX=0, velY=0, infected=false]]
[RectangleL [sX=0, sY=0, color=Red, speed=0, height=0, width=0, velX=0, velY=0, infected=true]]
另一答案

我分析你的问题。您必须在一个变量中获取该索引的所有值,以便您可以编辑它。使用HashMap这是最好的方法。我希望下面的代码可以帮助你。

import java.util.ArrayList;
import java.util.HashMap;

public class RectangleL 

    public static void main(String args[])
    
        ArrayList<HashMap<String,String>> lstShap = new ArrayList<>();
        HashMap<String,String> shape1 = new HashMap<>();
        HashMap<String,String> shape2 = new HashMap<>();
        lstShap.clear();
        shape1.put("width","30");
        shape1.put("height","40");
        shape1.put("infected","false");
        lstShap.add(0,shape1);

        shape2.put("width","20");
        shape2.put("height","49");
        shape2.put("infected","false");
        lstShap.add(1,shape2);

        System.out.println(lstShap.toString());
        shape1=lstShap.get(1);
        System.out.println(shape1.toString());
        shape1.put("infected","true");
        lstShap.set(1,shape1);

        System.out.println(lstShap.toString());
    

输出::

[infected=false, width=30, height=40, infected=false, width=20, height=49]
infected=false, width=20, height=49
[infected=false, width=30, height=40, infected=true, width=20, height=49]
另一答案

您需要首先从ArrayList获取要更改的对象。请记住,ArrayList只是Objects的容器。获得所需对象后,您可以将其作为对象处理。所以它可以是:

RectangleL rectangle = rectangles.get(5);   
rectangle.infected = true;

除此之外,还建议您在类中创建getter和setter方法,并将受感染的字段设置为私有,以便您可以更好地控制字段的访问和修改方式。

祝你好运

以上是关于如何选择ArrayList中元素的索引并更改其中一个属性?的主要内容,如果未能解决你的问题,请参考以下文章

Java中ArrayList如何删除指定位置的元素

ArrayList 和 Vector 的区别

ArrayList和Vector的区别

您如何使用Parcelable传递arraylist索引中的元素?

如何从ArrayList中删除重复的字符串[重复]

如何从arraylist中获取其中的一个元素