Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.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 二进制堆类构造函数_Java_Arrays - Fatal编程技术网

Java 二进制堆类构造函数

Java 二进制堆类构造函数,java,arrays,Java,Arrays,有人能解释一下二进制堆构造函数吗?(参见下面的java代码) 我不明白下面几句话: 数组=(AnyType[])新的可比[(currentSize+2)*11/10] 对于(任意类型项:项) 数组[i++]=项 public BinaryHeap( AnyType [ ] items ) { currentSize = items.length; array = (AnyType[]) new Comparable[ ( currentSize + 2 ) * 11 / 10

有人能解释一下二进制堆构造函数吗?(参见下面的java代码) 我不明白下面几句话:

  • 数组=(AnyType[])新的可比[(currentSize+2)*11/10]
  • 对于(任意类型项:项) 数组[i++]=项

    public BinaryHeap( AnyType [ ] items ) {
        currentSize = items.length;
        array = (AnyType[]) new Comparable[ ( currentSize + 2 ) * 11 / 10 ];
    
        int i = 1;
        for( AnyType item : items )
            array[ i++ ] = item;
        buildHeap( );
    }
    

    }


看起来您的
二进制堆
类被定义为
二进制堆。如果您已经知道这一点,那么就不是火箭科学:它通过应用公式创建一个比
数组参数更大的
可比
数组。然后,它对生成的数组应用对
AnyClass[]
的强制转换

注意:创建泛型数组的示例:

public class Foo<T> {
    private T[] array;
    private int size = 10;
    public Foo() {
        //line below commented since it generates "generic array creation" compile error
        //array = new T[size];
        //instead, this works without problems
        array = (T[]) new Object[size];
    }
}
公共类Foo{
私有T[]数组;
私有整数大小=10;
公共食物({
//下面的行已注释,因为它生成“通用数组创建”编译错误
//数组=新的T[大小];
//相反,这是没有问题的
数组=(T[])新对象[大小];
}
}
在这种情况下,因为
AnyType
已经扩展了
Comparable
创建了一个新的
可比[]
,其大小为
(currentSize+2)*11/10
。然后将其强制转换为类型
(AntType[])
,并分配给变量
数组

2. for( AnyType item : items) array[ i++ ] = item;

(AnyType item:items)
只是
的缩写,特别是一个。它迭代
,将每个元素分配给类型为
AnyType
的变量
item
。然后它将该元素分配给索引
i++
(同时递增
i
)处的
数组。另外,我不明白对于每个loop.the类是--public class BinaryHeapIs,为可比较的对象使用“new Comparable[]”构建数组是很常见的吗?@JavaOwl这是因为您无法创建泛型数组。通常,您会看到类似于
T[]数组=(T[])新对象[size]。在这种情况下,因为
AnyType
已经扩展了
Comparable,所以如果我为a构造一个数组,我需要输入“newcomparable[size]”。是吗?@JavaOwl是的,然后对
type[]
应用类型转换,如上面的代码所示。对于可比较的对象,使用“new Compariable[]”构建数组是常见的吗?因此,如果我为a构建数组,我需要放置“new Compariable[size]”。是这样吗?
2. for( AnyType item : items) array[ i++ ] = item;