- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个带有 int 和字段的 Java 类,而这个问题不需要其他字段。
class MyInteger {
int integer;
public MyInteger(int integer) {
this.integer = integer;
}
public int getInteger() {
return integer;
}
public void setInteger(int integer) {
this.integer = integer;
}
}
现在我测试我的类(class)
首先:我用整数创建了数组。
int size = 12;
MyInteger[] integers = new MyInteger[size];
for (int p = 0; p < size; p++) {
integers[p] = new MyInteger(
java.util.concurrent.ThreadLocalRandom.current().nextInt(
Integer.MIN_VALUE, Integer.MAX_VALUE)
);
}
现在打印它。
System.out.println("UNSORTED");
for (int p = 0; p < size; p++) {
int length = String.valueOf(integers[p].getInteger()).length();
String stringValue = new String(new char[12 - length]).replace("\0", " ") + integers[p].getInteger();
System.out.println("p:" + p + " -> " + stringValue);
}
在这里,我正在尝试对其进行排序。
Arrays.sort(integers, new Comparator<MyInteger>() {
@Override
public int compare(MyInteger myInteger1, MyInteger myInteger2) {
return myInteger2.getInteger() - myInteger1.getInteger();
}
});
再次打印
System.out.println("DESCENDING");
for (int p = 0; p < size; p++) {
int length = String.valueOf(integers[p].getInteger()).length();
String stringValue = new String(new char[12 - length]).replace("\0", " ") + integers[p].getInteger();
System.out.println("p:" + p + " -> " + stringValue);
}
现在我的输出...
UNSORTED
p:0 -> 1516262435
p:1 -> -1895913122
p:2 -> 460516193
p:3 -> 2056891047
p:4 -> 1556892429
p:5 -> 609045519
p:6 -> -1105298052
p:7 -> 1015464430
p:8 -> -232510140
p:9 -> 28575513
DESCENDING
p:0 -> -1105298052
p:1 -> -1895913122
p:2 -> 2056891047
p:3 -> 1556892429
p:4 -> 1516262435
p:5 -> 1015464430
p:6 -> 609045519
p:7 -> 460516193
p:8 -> 28575513
p:9 -> -232510140
我知道,因为有时 (int2 - int1) 的容量(以位为单位)大于简单 int我更好的选择是什么?
最佳答案
您可以使用 Integer.compare()
在您的比较器中实现此目的:
Arrays.sort(integers, (i1, i2) -> Integer.compare(i2.getInteger(), i1.getInteger()));
或者使用 Comparator.comparingInt()
甚至更短:
Arrays.sort(integers, Comparator.comparingInt(MyInteger::getInteger).reversed());
两种情况的结果应如下所示:
DESCENDING
p:0 -> 2023840480
p:1 -> 1411652946
p:2 -> 1329894719
p:3 -> 1158939955
p:4 -> 652971815
p:5 -> -118538025
p:6 -> -157722835
p:7 -> -1370854542
p:8 -> -1925460195
p:9 -> -1937778542
关于java - 在 Integer.MIN_VALUE、Integer.MAX_VALUE 值之间使用 Arrays.sort 和比较器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55986997/
我意识到下面的代码是正确的 Integer.MIN_VALUE == -Integer.MIN_VALUE == Math.abs(Integer.MIN_VALUE) 这是因为当我们取反-21474
我创建了一个包含以下字段的 Interval 类: ... private static final Integer MINF = Integer.MIN_VALUE; Integer head,ta
在 Java 中,当我说 Integer i = Math.abs(Integer.MIN_VALUE) 时。我得到与答案相同的值,这意味着 i 包含 Integer.MIN_VALUE。我也在 C+
我遇到以下问题。 我使用哈希表将一些数据存储在内存中(来自数据库查询): Map 其中 MyObject 由 3 个数组组成:float[]、int[] 和 double[]。我使用 Float.MI
我正在用 Javascript 编写一个简单的函数,它返回数字数组中最大的数字,并且我有一堆测试数据,但我一辈子都无法弄清楚为什么其中 2 个测试失败了。 我最大的列表函数: function lar
我明天有一个测试,我无法理解我的书籍解释,我感谢您的帮助: public class TestClass{ public static void main(String[] args) t
Integer.MIN_VALUE 在 Java 中的二进制表示是 100000000000000000000000000000000。 为什么不是 1000000000000000000000000
我知道有一个技巧可以使用反射来更改 static final 字段的值,并考虑在 Long 上尝试它 Field field = Long.class.getField("MIN_VALUE"
我有以下代码,但当 mutuaInformation 为零时它不会通过 if。知道出了什么问题吗? int largestEntropyIndex = Integer.MIN_VALU
根据 MDN , MIN_VALUE 是最接近 0 的值,任何小于它的值都被认为是 0。 不过,我正试图找到一个合适的例子来解释它的实际用法。 MDN 使用了以下示例 - if (num1 / num
我明天要考试,我看不懂我书上的解释,感谢帮助: public class TestClass{ public static void main(String[] args) throws
在 Java 中 int 类型是有符号的,但它有 a method比较两个整数,就好像它们是无符号的一样: public static int compareUnsigned(int x, int y
好吧,也许我只是因为这个而累了,但我怎样才能做到这一点? int x = Integer.MAX_VALUE+10; //或者也许 int x = Integer.MIN_VALUE-20; 我只是想
为什么这行代码很重要?(没有它我会得到错误的答案) if (dividend == Integer.MIN_VALUE && divisor == -1) { return Integer.M
任何人都可以解释一下为什么 Double.MIN_VALUE 实际上并不是 Doubles 可以采用的最小值吗?它是一个正值,Double 当然可以是负值。 我明白为什么它是一个有用的数字,但它似乎是
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
这个问题在这里已经有了答案: Math.abs returns wrong value for Integer.Min_VALUE (8 个答案) 关闭 7 年前。 考虑下面的 java 代码。 I
这些值在 java 中如何相同? -Integer.MIN_VALUE == Integer.MIN_VALUE 值是: -2147483648 : -2147483648 我尝试比较它并返回 tru
以下内容也适用于其他 MIN_VALUE 和 MAX_VALUE,但我们现在只关注 Integer。我知道在 Java 中整数是 32 位的,Integer.MAX_VALUE = 214748364
https://leetcode.com/problems/balanced-binary-tree/ Given a binary tree, determine if it is height-b
我是一名优秀的程序员,十分优秀!