Java链表:如何在图片中添加像素

Java链表:如何在图片中添加像素,java,linked-list,Java,Linked List,我有一个关于在LinkedList中添加“像素”的问题 有一个黑白图片的类(类称为“图片”)。 当你创建图片对象时,你必须说明图片的高度和宽度。宽度u也表示图片对象中的像素阵列有多大。所以图片的宽度和数组的长度一样长 在数组的每个元素中,应将图片的列作为“像素”的链接列表。 但是在链表中只有黑色像素是安全的! 每个“像素”都有一个int,表示它在图片中所在的行。 白色像素不安全 完成的方法: 公共像素像素(int zeile、int spalte) 此方法在“图片”的行/列中返回一个“像素”。

我有一个关于在LinkedList中添加“像素”的问题

有一个黑白图片的类(类称为“图片”)。 当你创建图片对象时,你必须说明图片的高度和宽度。宽度u也表示图片对象中的像素阵列有多大。所以图片的宽度和数组的长度一样长

在数组的每个元素中,应将图片的列作为“像素”的链接列表。 但是在链表中只有黑色像素是安全的! 每个“像素”都有一个int,表示它在图片中所在的行。 白色像素不安全

完成的方法:

  • 公共像素像素(int zeile、int spalte) 此方法在“图片”的行/列中返回一个“像素”。 如果没有黑色“像素”,则返回null

  • 《图片报》() 正在打印黑色像素的“*”和白色像素时的“-”

未完成的方法:

  • 公共虚空像素(int zeile、int spalte)
此方法应检查该行/列中是否有黑色像素。 这里我可以使用pixelAt()方法。 应该将白色像素更改为黑色像素,以便在链接列表中添加一个像素。如果像素已为黑色,则不应发生任何情况

在我再次调用printBild()之后,白色像素“\u1”仍然是白色而不是黑色“*”

公共类像素{
私营企业;
私有像素下一步;
公共像素(整数像素,像素p){
this.zeile=zeile;
this.next=p;
}
public int getZeile(){
返回zeile;
}
公共像素getNext(){
下一步返回;
}
//Setze Verweis auf nächsten schwarzen像素
公共空设置下一个(像素p){
next=p;
}
}
公共舱图片{
私有像素[]数据;
布雷特霍赫一等兵;
《公共图片报》(霍厄区、布雷特区){
this.data=新像素[breite];
这个。hoehe=hoehe;
this.breite=breite;
}
公共无效设置数据(像素[]温度){
此参数=温度;
}
公共像素像素点(int-zeile,int-spalte){
像素迭代器=数据[spalte];
if(迭代器.getZeile()==zeile){
返回迭代器;
}
否则{
while(iterator.getNext()!=null){
iterator=iterator.getNext();
if(迭代器.getZeile()==zeile){
返回迭代器;
}
}
}
返回null;
}
public void printBild(){
字符串leer=“”;
String[]hi=新字符串[hoehe];
for(int k=0;k


谢谢大家!

首先,你的
pixelOn
比你写的要复杂得多。应该是这样的:

public void pixelOn(int zeile, int spalte) {
    if (pixelAt(zeile, spalte) == null) {
        Pixel neu = new Pixel(zeile, null);
        Pixel it = data[spalte];
        if(it!=null){
            if(it.getZeile()<zeile){
                Pixel tmp=it.getNext();
                while(tmp!=null && tmp.getZeile()<zeile){
                    it = tmp;
                    tmp = it.getNext();
                }
                it.setNext(neu);
                neu.setNext(tmp);
            }else{
                neu.setNext(it);
                data[spalte] = neu;
            }
        }else{
            //there is nothing in the column for now add it
            data[spalte] = neu;
        }
    }
}
public void像素(int-zeile,int-spalte){
如果(像素(zeile,spalte)==null){
像素neu=新像素(zeile,null);
像素it=数据[spalte];
如果(it!=null){

如果(it.getZeile())你没有链表,但是有一个数组。数组是不可变的,你必须使用一个列表(比如ArrayList)谢谢@Toilal!但是每个数组元素中都有链表?我不想改变数组的长度。只是数组中的链接列表很多!我知道了!现在我明白我的想法有多复杂了。
public void pixelOn(int zeile, int spalte) {
    if (pixelAt(zeile, spalte) == null) {
        Pixel neu = new Pixel(zeile, null);
        Pixel it = data[spalte];
        if(it!=null){
            if(it.getZeile()<zeile){
                Pixel tmp=it.getNext();
                while(tmp!=null && tmp.getZeile()<zeile){
                    it = tmp;
                    tmp = it.getNext();
                }
                it.setNext(neu);
                neu.setNext(tmp);
            }else{
                neu.setNext(it);
                data[spalte] = neu;
            }
        }else{
            //there is nothing in the column for now add it
            data[spalte] = neu;
        }
    }
}