Java 怎么去调用结构体的大小比较,用符号判断的方式为什么没办法进行结构体的大小比较呢
我给你封装了一个方法了, 没看吗? 下过截图也在哈
代码我复制过来了
import java.util.List;
class Struct1 {
List<Integer> field1;
}
class Struct2 {
int field1;
}
public class Main {
public static void main(String[] args) {
Struct1 struct1 = new Struct1();
struct1.field1 = List.of(1, 2, 3);
Struct2 struct2 = new Struct2();
struct2.field1 = 10;
if (struct1.field1.size() > struct2.field1) {
System.out.println("Struct1的内容比较大");
} else if (struct1.field1.size() < struct2.field1) {
System.out.println("Struct2的内容比较大");
} else {
System.out.println("两个结构体的内容大小相等");
}
}
}
回答:结构体大小比较,感觉有点新奇的,是为了进行实现什么功能呢;相比较的话,我认为应该是占用字节数的一个大小比较吧,又或者是在内存资源中所占用的实际空间比较,感觉可以考虑将结构体对象写入到文件中,因为Java支持序列化,然后比较写入后的文件大小
值类型:基本数据类型
引用类型:除基本数据类型之外的类型
1.值传递:适用于基本数据类型和不可变类(String,基本类型包装类型是引用类型,但是遵循值传递规则),传递的是数据的拷贝,被调用对象对新数据的改变不影响原数据的取值
2.引用数据类型:传递的是引用地址的拷贝,被调用对象对新数据的改变影响原数据的取值,因为新数据和原数据的引用虽然不同但却指向堆中的同一数据对象。
package com.wugeek.test;
/**
* @author 作者 :peanut.w
* @version 创建时间:2017年12月9日 下午4:13:17
* 类说明
*/
public class TestPass {
int a=123;//基本数据类型int
String b="123";//特殊的类string
StringBuffer c=new StringBuffer("123");//引用数据类型
public void method(){
this.changeInt(a);
System.out.println(a);
this.changeString(b);
System.out.println(b);
this.changeStringBuffer(c);
System.out.println(c);
}
public void changeInt(int x){
x=1234;
}
public void changeString(String y){
y="1235";
}
public void changeStringBuffer(StringBuffer stringBuffer){
stringBuffer.append(456);
}
public static void main(String [] args){
TestPass test =new TestPass();
test.method();
}
//输出结果:123 123 123456
}
根据参考资料和问题内容,Java中没有直接支持结构体的概念,但可以通过其他方式实现结构体大小的比较判断。
解决方案如下:
Comparable
接口来支持对象之间的比较。比如以下示例代码中的Student
类:public class Student implements Comparable<Student> {
private String name;
private int score;
// 构造函数
// getter和setter方法
// 接口方法,用于比较对象大小
@Override
public int compareTo(Student other) {
// 实现比较逻辑,比如根据分数进行比较
return Integer.compare(this.score, other.score);
}
}
在自定义类中实现Comparable
接口,重写compareTo
方法。根据需要比较的成员变量来定义比较的逻辑,比如按分数进行比较。
在应用程序中创建结构体对象,并调用compareTo
方法来进行比较判断,根据返回值进行后续的处理。示例代码如下:
public class Main {
public static void main(String[] args) {
Student student1 = new Student("Alice", 80);
Student student2 = new Student("Bob", 90);
if (student1.compareTo(student2) < 0) {
System.out.println(student1.getName() + " 比 " + student2.getName() + " 小");
} else if (student1.compareTo(student2) > 0) {
System.out.println(student1.getName() + " 比 " + student2.getName() + " 大");
} else {
System.out.println(student1.getName() + " 和 " + student2.getName() + " 一样大");
}
}
}
以上就是在Java中实现结构体大小比较的一种思路和解决方案。如果需要根据不同的字段进行比较,可以在compareTo
方法中添加相应的逻辑。