Java语言如何定义一个具有不确定个数属性的结构体对象呢

Java语言如何定义一个具有不确定个数属性的结构体对象呢?所有的属性的列也要可以确定,这个没办法在代码里定义,所以没思路了,谁能帮我

你想实现不确定个数的话用数组或列表来定义。定义一个类,,属性可以存储不确定个数的属性值。参考

import java.util.List;

public class MyStruct {
    private List<String> attributes;

    public MyStruct(List<String> attributes) {
        this.attributes = attributes;
    }

    public List<String> getAttributes() {
        return attributes;
    }
}

import java.util.ArrayList;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<String> attributes = new ArrayList<>();
        attributes.add("测试文本1");
        attributes.add("测试文本2");
        MyStruct myStruct = new MyStruct(attributes);
        List<String> myAttributes = myStruct.getAttributes();
        System.out.println(myAttributes);
    }
}


不确定个数属性、属性的列确定,这两个是什么意思啊?!举个栗子呗
你的意思是不是初始化函数的参数譬如有3个参数,实际可以填入任意数量个参数?

以定义一个包含所有属性的结构体类,并为每个属性创建一个对应的数组,数组的长度可以根据需要动态调整,
也可以使用List或ArrayList来存储属性,定义一个包含所有属性的结构体类,并使用集合类来存储属性

集合类实现如图

img


代码如下 :

import java.util.List;
import java.util.ArrayList;

public class Struct {
    private List<String> properties;

    public Struct(List<String> properties) {
        this.properties = properties;
    }

    public List<String> getProperties() {
        return properties;
    }

    public static void main(String[] args) {
        List<String> properties = new ArrayList<>();
        properties.add("李白");
        properties.add("杜甫");
        properties.add("白居易");
        Struct struct = new Struct(properties);
        List<String> structProperties = struct.getProperties();
        for (String property : structProperties) {
            System.out.println(property);
        }
    }
}


不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/1071306
  • 这篇博客也不错, 你可以看下Java初学者作业——编写Java程序,在控制台中输入一个数字,要求定义方法实现找出能够整除该数字的所有数字。
  • 你还可以看下java参考手册中的 java-学习Java语言 - 描述Java编程语言的基本概念和特点的课程。-泛型是Java编程语言的一个强大功能。它们提高了代码的类型安全性,使更多的错误可以在编译时发现。-为什么使用仿制药?
  • 除此之外, 这篇博客: java垃圾回收中的 垃圾回收的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收? 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    对于GC来说,当程序员创建对象时,GC就开始监控这个对象的地址,大小以及使用情况。通常,GC采用有向图的方式记录和管理堆中所有的对象,通过这种方式确定哪些对象时可达的,哪些对象时不可达的,当GC确定一些对象不可达时,GC就有责任回收这些内存空间。
    程序员可以手动执行System.gc() ,通知GC运行,但java语言规范并不保证GC一定会执行

  • 您还可以看一下 汪翠老师的java项目实战之欢乐斗地主游戏开发教程 毕业项目课程设计带源码课程中的 接收从服务器端群发回来的消息并添加地主牌小节, 巩固相关知识点
  • 以下回答来自chatgpt:

    在Java语言中,可以使用Map来定义一个结构体对象,其中属性的个数是动态的。Map是一种键值对的数据结构,可以存储不定数量的属性和对应的值。

    以下是一个示例代码:

    import java.util.HashMap;
    import java.util.Map;
    
    public class DynamicStruct {
        private Map<String, Object> properties;
    
        public DynamicStruct() {
            properties = new HashMap<>();
        }
    
        public void setProperty(String key, Object value) {
            properties.put(key, value);
        }
    
        public Object getProperty(String key) {
            return properties.get(key);
        }
    
        public boolean containsProperty(String key) {
            return properties.containsKey(key);
        }
    
        public void removeProperty(String key) {
            properties.remove(key);
        }
    
        public static void main(String[] args) {
            DynamicStruct struct = new DynamicStruct();
    
            // 设置属性
            struct.setProperty("name", "John");
            struct.setProperty("age", 25);
            struct.setProperty("gender", "male");
    
            // 获取属性
            System.out.println("Name: " + struct.getProperty("name"));
            System.out.println("Age: " + struct.getProperty("age"));
            System.out.println("Gender: " + struct.getProperty("gender"));
    
            // 判断属性是否存在
            System.out.println("Has address property: " + struct.containsProperty("address"));
    
            // 移除属性
            struct.removeProperty("gender");
            System.out.println("Has gender property: " + struct.containsProperty("gender"));
        }
    }
    

    运行以上代码,输出结果如下:

    Name: John
    Age: 25
    Gender: male
    Has address property: false
    Has gender property: false
    

    在这个示例中,我们使用了一个名为DynamicStruct的类来表示结构体对象。它使用一个Map来存储属性和对应的值。可以通过setProperty方法来设置属性的值,通过getProperty方法来获取属性的值。还可以使用containsProperty方法来判断属性是否存在,使用removeProperty方法来移除属性。

    请注意,由于Java是一种面向对象的语言,没有内置的结构体对象类型。因此,使用Map来模拟结构体是一种常见的做法。通过使用Map,可以动态地添加、删除以及访问属性,使属性的个数是动态的。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^