1
41
最简单的定义: 如果输入相同,您 总是 获得相同的输出。 上面说,通过完全相同的hashmap迭代可能在不同的时间产生不同的结果,即使您没有更改任何内容。通常这没关系,但如果有关系,你应该使用Linkedhashmap。 |
2
13
以可以预先“确定”的顺序。 由于散列的工作方式,地图中的元素被“扰乱”到任意位置。混乱的位置不容易提前确定——它们不可确定——你不知道结果的顺序。 |
3
8
简单来说:当您调用keys()、values()或entryset()时,您会得到一个集合,您可以通过它进行迭代。这一行是说,您不能期望迭代器返回对象的顺序是任何特定的顺序。特别是,它可以不同于插入顺序和按键值自然排序。 如果希望迭代器按插入顺序工作,请使用LinkedHashMap。如果要按键值迭代,请使用treemap。请注意,这两种方法的性能都比普通的hashmap稍差,因为它们都需要做额外的工作来跟踪顺序。 |
4
8
严格来说,hashmap迭代顺序几乎可以肯定 不 不确定性。就像绝大多数的计算过程一样,如果你通过它 确切地 同样,结果也会完全相同。一个真正的非确定性系统会包含一些外部的随机元素,这在这里是不太可能的。至少在大多数情况下。 他们什么 真正地 我认为,这是因为映射包含一组特定的元素,所以您不应该期望当您对它们进行迭代时,它们会以特定的顺序出现。这并不意味着迭代的顺序是 随机的 这仅仅意味着作为一个开发者,你不应该指望知道它是什么。 在大多数情况下,这样做的原因是,有些实现细节依赖于不同平台和/或访问顺序的不同。后者又可能由线程调度和事件计时决定,这是天生不可预测的。 在大多数情况下,在任何一个单独的平台上,使用最常见的线程模型——单线程应用程序——如果你总是按顺序x插入和删除一组特定的东西,你总是按顺序y把它们取出来。只是y将如此精确地依赖于x,而在平台上,甚至没有必要考虑太多这将是什么。 基本上,即使它 不是 随机的,可能也一样。 |
5
5
确定性:可以确定
|
6
3
这是一种算法,当给定一个特定的输入时,将产生相同的输出。 我发现了一个很好的例子:
|
7
2
确定性意味着结果是可预测/可预见的。 |
8
2
非确定性 也就是说,没有一个结果可以事先得到。算术表达式(如1+2或log e)是确定性的。只有一个正确的答案,你可以提前知道。把一把沙子扔到空中,每粒沙子落在哪里 有效地 任何主要精度的不确定性。 这可能并不完全正确,因为您可以查看底层库和JVM实现的源代码,并且 可能 以某种方式确定结果的顺序。对他们来说,“没有特定的秩序是可以保证的”或者类似的话可能更正确。 在这种情况下,相关的是你不能依赖于订单。 |
9
0
这是hashmap的属性,元素不会按照与hashmap不按顺序插入元素相同的顺序进行迭代。因此,文档中的行 |
10
0
不确定性意味着没有明确定义的行为。 对于hashmap,根据插入元素的方式,您可能具有一个或其他迭代顺序。 |
11
-4
hashmap不维护添加内容的顺序,如果您希望输出是添加内容的顺序,则应使用linkedhashmap,因此
以下是示例: 1.不确定性
2.确定性
|