以下是import pylab
# prepare the domain for the function we graph
x_0 = -5.0; x_1 = +5.0; n = 100
xs = pylab.linspace(x_0, x_1, n)
#print('xs: ',type(xs))
# quadratic equation
def Quad(x, a = 1, b = 0, c = 0): # def providing default values for a, b, c
return a*x*x + b * x + c
ys = Quad(xs) # since xs <class 'numpy.ndarray'> broadcasting magic is invoked
#print('ys: ',type(ys))
# Graph the function
pylab.plot(xs, ys, "bo-")
pylab.show()
(ref)的源代码:
Iterables.isEmpty()
我想知道public static boolean isEmpty(Iterable<?> iterable) {
if (iterable instanceof Collection) {
return ((Collection<?>) iterable).isEmpty();
}
return !iterable.iterator().hasNext();
}
方法如果给定Iterables.isEmpty()
参数的类型为iterable
,则Set
方法会迭代所有元素,其范围为Collection
。将Iterable
转换为Collection
会导致完全迭代吗?如果是这样,为什么?如果没有,为什么不呢?
答案 0 :(得分:7)
我想知道如果给定
,Iterables.isEmpty()
iterable
方法是否会迭代所有元素
否:Iterables.isEmpty()
is implemented as iterable.iterator().hasNext()
for non-Collection
s。它永远不会比第一个元素更进一步。
将Iterable转换为Collection是否会导致完全迭代
没有。 Casting对该对象没有任何作用,它只是告诉编译器“信任你”它可以被视为子类,而不是超类。
来自JLS Sec 15.6:
强制转换表达式...在运行时检查引用值是指其类与指定引用类型或引用类型列表兼容的对象。