Java的编程语言的编写过程中,怎么才能去实现对于结构体的一个大小的比较判断呢

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支持序列化,然后比较写入后的文件大小

  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/1073714
  • 这篇博客也不错, 你可以看下【JAVA企业级开发】在JAVA生产项目中的关于实现单文件上传功能模块,多文件上传功能模块的优化方法以及用户上传文件成功之后的自动给用户发送邮件提醒的实现过程
  • 同时,你还可以查看手册:java-学习Java语言 - 描述Java编程语言的基本概念和特点的课程。-泛型是Java编程语言的一个强大功能。它们提高了代码的类型安全性,使更多的错误可以在编译时发现。-通用方法 中的内容
  • 除此之外, 这篇博客: Java 将参数传递给方法,参数是否会被改变?中的 Java 中方法的传参没有所谓的值传递和引用传递,值传递和引用传递已经是历史,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进阶高手课-深入浅出Java网络编程课程中的 案例实战:浏览器打开一个网址,整个过程是怎么样的?小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    根据参考资料和问题内容,Java中没有直接支持结构体的概念,但可以通过其他方式实现结构体大小的比较判断。

    解决方案如下:

    1. 创建一个自定义的类来表示结构体。该类应包含需要比较的成员变量,并根据业务需求实现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);
        }
    }
    
    1. 在自定义类中实现Comparable接口,重写compareTo方法。根据需要比较的成员变量来定义比较的逻辑,比如按分数进行比较。

    2. 在应用程序中创建结构体对象,并调用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方法中添加相应的逻辑。