思路:两个连续数字存储在数组中,内存地址是递增的,只需判断两个相同数字内存地址是否还是递增即可。
具体方案:需要自定义MyInteger对象,因为对象才可获取内存地址。此外,获取对象内存地址,需要引入jol-core依赖包。
代码示例:
private boolean isStable(){
MyInteger[] array = new MyInteger[]{new MyInteger(2),new MyInteger(2),new MyInteger(2)};
MyInteger tmp = array[1];
array[1] = array[2];
array[2] = tmp;
for (int i=0;i<array.length - 1;i++){
if (array[i].getValue() == array[i+1].getValue()
&& VM.current().addressOf(array[i]) > VM.current().addressOf(array[i+1]))
return false;
}
return true;
}
public class MyInteger{
public MyInteger(int value){
this.value = value;
}
private int value;
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
}
maven库jol-core依赖
<dependency>
<groupId>org.openjdk.jol</groupId>
<artifactId>jol-core</artifactId>
<version>0.9</version>
</dependency>