0

私はこのコードを何度も試しましたが、その動作を理解していないようです。

のインスタンスをAreaforArrayListループで にArea追加し、配列に追加されたすべてのインスタンスを結合したものをもう 1 つ作成します (ただし、この結合Areaは に追加されることはありませんArrayList)。

の最初のアイテムを別のクラスから取得しようとすると、最初に追加されたことのないArrayList結合の境界が表示Areaされます?!?!

import java.awt.Shape;
import java.awt.geom.Area;
import java.awt.geom.Rectangle2D;
import java.util.ArrayList;


public class CorruptArray {
public ArrayList<Area> arrayList = new ArrayList<Area>();

public CorruptArray(){
        double x = 100.0;
        double y = 200.0;
        double width = 100.0;
        double height = 200.0;
        Area map = null;

        int i = 5;
        for(int j =0 ; j<i; j++){
            arrayList.add(new Area(new Rectangle2D.Double(x,y,width,height)));

            x+=10;
            y+=10;
            width+=10;
            height+=10;
        }

        int k = 0;
        for(Area area : arrayList){
            System.out.println("INITIAL BOUNDS ON ENTRY:  " + area.getBounds().toString());
            if(k == 0){
                map = area;
                k++;

            }else{
                map.add(area);

            }
            System.out.println("OVERALL JOINED AREA - map   " + map.getBounds().toString() + "\n");
        }

        TestArray test = new TestArray(this);
    }

private static class TestArray{
    TestArray(CorruptArray ca){
        System.out.println("\n\n");
        for(Area area : ca.arrayList){
            System.out.println("RETRIVAL OF BOUNDS FROM TestArray:  " + area.getBounds().toString());
        }
    }
}



public static void main(String args[]){
    new CorruptArray();
}

プログラムを実行すると、次の出力が得られます。

INITIAL BOUNDS ON ENTRY:  java.awt.Rectangle[x=100,y=200,width=100,height=200]
OVERALL JOINED AREA - map java.awt.Rectangle[x=100,y=200,width=100,height=200]

INITIAL BOUNDS ON ENTRY:  java.awt.Rectangle[x=110,y=210,width=110,height=210]
OVERALL JOINED AREA - map java.awt.Rectangle[x=100,y=200,width=120,height=220]

INITIAL BOUNDS ON ENTRY:  java.awt.Rectangle[x=120,y=220,width=120,height=220]
OVERALL JOINED AREA - map java.awt.Rectangle[x=100,y=200,width=140,height=240]

INITIAL BOUNDS ON ENTRY:  java.awt.Rectangle[x=130,y=230,width=130,height=230]
OVERALL JOINED AREA - map java.awt.Rectangle[x=100,y=200,width=160,height=260]

INITIAL BOUNDS ON ENTRY:  java.awt.Rectangle[x=140,y=240,width=140,height=240]
OVERALL JOINED AREA - map java.awt.Rectangle[x=100,y=200,width=180,height=280]




RETRIVAL OF BOUNDS FROM TestArray:  java.awt.Rectangle[x=100,y=200,width=180,height=280]
RETRIVAL OF BOUNDS FROM TestArray:  java.awt.Rectangle[x=110,y=210,width=110,height=210]
RETRIVAL OF BOUNDS FROM TestArray:  java.awt.Rectangle[x=120,y=220,width=120,height=220]
RETRIVAL OF BOUNDS FROM TestArray:  java.awt.Rectangle[x=130,y=230,width=130,height=230]
RETRIVAL OF BOUNDS FROM TestArray:  java.awt.Rectangle[x=140,y=240,width=140,height=240]
4

1 に答える 1