Java语言怎么比较两个不同类型的数据结构体的大小呢,用什么代码可以实现比较
java里有结构体?
如果是两个自定义类
如果你问的是占据的内存的大小,那么可以这样:
那么可以试试用java.lang.instrument.Instrumentation类的getObjectSize(Object obj)方法获取大小
如果你问的是两个类成员之间相互比较,那没什么好办法,除非它们全都继承自同一个父类,然后父类提供比较方法
要么你重写比较方法,针对各种不同的类互相比较
别说不同类型相互比较大小,同类型比较大小也是个难事
一个猫,一个狗,你说他俩比大小比什么呢,比体重还是比年龄
java结构体大小?你是比较两个类的大小吧,那你也得看你实际上是怎么去判断两个类大小,是通过某个字段还是所有字段,使用hash还是用什么比较
每篇一句励志:当困难来临时,用微笑去面对,用智慧去解决。
最近做一个系统,系统要求是记录某个人修改的某个字段及这个字段修改前与修改后的数据等一些信息。
对于Java语言中比较两个不同类型的数据结构的大小,可以通过实现Comparable接口或使用Comparator进行比较。下面给出两种不同的解决方案:
示例代码:
定义一个名为DataStructure的类,表示数据结构:
public class DataStructure implements Comparable<DataStructure> {
private int size;
public DataStructure(int size) {
this.size = size;
}
public int getSize() {
return size;
}
@Override
public int compareTo(DataStructure other) {
return Integer.compare(this.size, other.getSize());
}
}
使用示例:
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<DataStructure> dataStructures = new ArrayList<>();
dataStructures.add(new DataStructure(5));
dataStructures.add(new DataStructure(3));
dataStructures.add(new DataStructure(7));
Collections.sort(dataStructures);
for (DataStructure dataStructure : dataStructures) {
System.out.println(dataStructure.getSize());
}
}
}
运行上述示例代码,输出结果为:
3
5
7
示例代码:
定义一个名为DataStructure的类,表示数据结构:
public class DataStructure {
private int size;
public DataStructure(int size) {
this.size = size;
}
public int getSize() {
return size;
}
}
定义一个实现Comparator接口的比较器类,名为DataStructureComparator:
import java.util.Comparator;
public class DataStructureComparator implements Comparator<DataStructure> {
@Override
public int compare(DataStructure data1, DataStructure data2) {
return Integer.compare(data1.getSize(), data2.getSize());
}
}
使用示例:
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<DataStructure> dataStructures = new ArrayList<>();
dataStructures.add(new DataStructure(5));
dataStructures.add(new DataStructure(3));
dataStructures.add(new DataStructure(7));
Collections.sort(dataStructures, new DataStructureComparator());
for (DataStructure dataStructure : dataStructures) {
System.out.println(dataStructure.getSize());
}
}
}
运行上述示例代码,输出结果为:
3
5
7
以上就是使用Java语言比较两个不同类型的数据结构大小的两种解决方案。