如何按内存位置对集合中的对象进行排序?

StackExchange123:
package com.company;

import java.util.TreeSet;

public class Main {

    public static class Node implements Comparable<Node>
    {
        public int value;

        public Node(int value) {
            this.value = value;
        }

        @Override
        public int compareTo(Node node) {
            // Memory location of this - memory location of node.
            return 0;
        }
    }

    public static void main(String[] args) {

        TreeSet<Node> set = new TreeSet<>();

        Node n = new Node(5);

        set.add(n);

        for (var node : set)
            System.out.println(node.value);
    }
}

我在这里Node上课。我希望能够将节点插入TreeSet,并按其在内存中的位置对其进行排序。如何返回函数中存储位置的差值compareTo

斯蒂芬·C:

对象的内存位置不适用于(纯)Java程序。

即使您使用本机代码或Unsafe获取对象的位置,也无法保证GC不会移动它...恕不另行通知。因此,如果要按其内存地址对集合中的对象进行排序,则该集合将不会保持排序。

另一方面,您可以System.identityHashCode(Object)用来获取一个32位代码,该代码在对象的生存期内不会改变。即使GC移动了对象。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在javascript中,如何按对象的属性对对象集合进行排序?

如何在Laravel中按集合的关系对集合进行排序

如何在 PHP 中按值对对象数组集合进行排序

Magento。按位置对产品集合进行排序

如何在MongoDB中按日期对集合进行排序?

如何在MongoDB中按行对集合进行排序?

我可以按内存位置对python中的列表元素进行排序(排序)吗?

按与当前GPS位置的距离对GPS位置的集合进行排序

按大小对ArrayList中的集合进行排序

如何按Typescript中的键值对对象列表进行排序

如何按数值对javascript中的对象进行排序

如何按日期对对象列表进行排序(java集合,List <Object>)

如何按顺序按每个对象中的值对数组中对象的索引进行排序

如何按 ID 对卡片对象进行排序

如何按名称对 Doctrine 对象进行排序?

按日期对ArrayList中的对象进行排序?

如何使用Java中的map集合按字符串中出现的次数对字符进行排序?

如何按特定属性对 PHP 中的关联数组集合进行排序

如何对集合中的数组进行排序?

如何按类别对集合目录进行排序?

如何按顺序按顺序对Javascript中的对象数组进行排序?

如何按对象的子对象字段对对象进行排序?

在mongodb中按日期和时间对集合进行排序

在Eloquent中按自定义顺序对集合进行排序

按Kotlin中的多个字段对集合进行排序

在Swift中按类型和属性对异构集合进行排序

按文档 ID 对集合 Firestore 中的文档进行排序

按xpages中的总值对文档集合进行排序

查找对象时,如何按表中的字段对其获取的子对象进行排序