java - 将对象从列表传输到数组

标签 java arrays sorting bubble-sort singly-linked-list

背景信息:kragarm 是一个由两种负载组成的单链表(单一力和力矩,两者都实现了 IBelastung 接口(interface))。我试图将对象复制到一维数组(objekte)中,根据它们的位置对其进行排序,并将其属性(位置、力和力矩)放入二维数组(verlauf)中。 bildeAufDouble() 方法可以获取负载的位置 这是我的代码:

public double[][] stelleVerlaufDar() {

    IBelastung[] objekte = new IBelastung[kragarm.anzahlElemente()];

    double[][] verlauf = new double[kragarm.anzahlElemente()][3];

    IMeinIterator it = kragarm.iterator();      
    while (it.hatNaechsten()) {         
        IBelastung aktueller = (IBelastung) it.naechsten();

        for (int i = 0; i < objekte.length; i++) {
            objekte[i] = aktueller;     
            System.out.print("| " + String.format("%6.2f",objekte[i].bildeAbAufDouble())+" |");
            System.out.println();
            }
        }

    SortierenEinesFeldes.bubbleSort(objekte);
    System.out.println("Sortierten Laengen");

    for (int i = 0; i < objekte.length; i++) {
        System.out.println("| " + String.format("%6.2f",objekte[i].bildeAbAufDouble())+" |");
    }
    System.out.println();

这是我的控制台 here

为什么它打印数字 5 次,然后在应该排序后,为什么它只打印排序后的第一个数字和 5 次?先感谢您。

最佳答案

for (int i = 0; i < objekte.length; i++) {
    objekte[i] = aktueller;     
}

这将使用相同的元素填充整个数组:aktueller

你不应该有两个嵌套循环。您应该只有一个,并且它应该在每次迭代时递增 i:

int i = 0;
while (it.hatNaechsten()) {         
    IBelastung aktueller = (IBelastung) it.naechsten();
    objekte[i] = aktueller;   
    i++;
}

另外,请注意,您没有将任何内容存储到该方法返回的 verlauf 数组中。

关于java - 将对象从列表传输到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34775216/

相关文章:

Java:如何从 int[][] 中获取单个 int 值

Java - 如何从 Android 中的 azure 移动服务检索和使用单个值

ios - 具有indexpathforselectedrow的数组逻辑

javascript - 匹配子字符串并删除数组元素

python - 如何引导 numpy 数组的最里面的数组?

java - 如何在worklight 8.0 android中使用WLResourceRequest

java - 如何使用非管理员用户登录apacheds

Python - 根据两列组合删除数据框中的重复项?

algorithm - 在小于 O(n) 的时间内找到交换的元素?

c# - 按项目类型对数组进行排序