[1,2]
即使未对哈希集进行排序,以下代码也会产生输出。
Set set = new HashSet();
set.add(new Integer(2));
set.add(new Integer(1));
System.out.println(set);
这是为什么?
编辑:从Java 8及更高版本开始,以下内容不再适用。这证明您不应该依赖未记录的Java行为。
此行为是由几个单独的原因引起的:
HashMap
s和HashSet
s由数组备份因此,如果您将一些小的(<16)整数添加到hashmap / hashset中,则会发生以下情况:
i
具有哈希码i
i
i
请注意,如果存储桶的初始数量太少,则整数可能会落入没有编号的存储桶中:
HashSet<Integer> set = new HashSet<>(4);
set.add(5); set.add(3); set.add(1);
for(int i : set) {
System.out.print(i);
}
版画153
。
输出578如何?
问题内容: This is the CSS: How does it produce the circle below? 假设,如果矩形的宽度为180像素,高度为180像素,则它将矩形变得越来越小,也就是说,如果半径大小增加,矩形几乎会消失。 那么,如何将180像素的边界height/width-> 0px变成半径为180像素的圆? 问题答案: 高度/宽度-> 0px的180像素边框如何变成半径为
我用C#做了一个快速排序算法,当数组中只有10个项时,它可以工作。当我增加这个数字时,它就会陷入无限循环。这是问题所在的代码: 当调用sortArray时,left=0,right=49&array是一个随机的50个元素的一维数组。 您可以忽略对reDrawer和refresher的引用,因为这些不会影响排序算法,它们只会在图片框中绘制结果。
问题内容: 我正在尝试创建一个HashSet(或任何集合类型- 但我认为HashSet最适合我),无论插入什么,它都将保持顺序。这是我正在从事的联系人管理器项目。我一直在尝试以下示例。 我希望输出将名称按字母顺序排列-至少根据其名字或姓氏。但是,我什至无法辨别用于此排序的HashSet方法。 我的问题是,如何告诉程序如何根据规范对名称进行排序? 问题答案: HashSet不会为条目提供任何有意义的
最近,我在尝试使用和对自引用列表进行排序时遇到了一个奇怪的差异。我希望有人能弄清楚这件事。有关守则如下:
问题内容: 范例1: 输出为: 范例2: 输出: 我只是不明白为什么将saySomething设为非静态会导致第二次调用saySomething调用Cow版本而不是Animal版本。我的理解是, 这两种情况都是输出。 问题答案: 静态方法在编译时绑定到其类,并且不能多态使用。在Animal上声明“静态”方法时,该方法永远绑定到Animal类,并且不能被覆盖。静态方法绑定到Class对象,而不是Cl