Как сделать массив вложенных структур в java? - PullRequest
0 голосов
/ 11 марта 2020

Как сделать структуру массива такой в ​​java? И как его инициировать в Main Class?

struct Channel{

    char email[100];
    char password[100];
    char channelName[100];
    char subscriber[][100];
    int numberOfSubscriber;
    int numberOfVideos;

    struct Video{
         String videoId ;
         char videoName ;
         char videoDuration ;
         char videoTag ;
    }video[100];

}channel[100];
// i need to make it like this ( channel[i].video[j].*** )

Ответы [ 3 ]

1 голос
/ 11 марта 2020

Вы создаете классы в java.

Вместо использования здесь массивов, вы можете использовать java.util.List, который позволяет динамически добавлять или удалять элементы.

Вот пример. Вы можете улучшить это, добавив конструктор, сделав поля приватными и добавив publi c методы получения и установки для управления потоком данных.

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

class Video {
    String videoId;
    String videoName;
    String videoDuration;
    String videoTag;
}

class Channel {
    String email;
    String password;
    String channelName;
    List<String> subscriber = new ArrayList<>();
    List<Video> videos = new ArrayList<>();

    public int numberOfSubscriber() {
        return subscriber.size();
    }
    public int numberOfVideos() {
        return videos.size();
    }
}

public class Main {
    public static void main(String[] args) {
        // create a new channel
        Channel channel = new Channel();

        // modify some variables
        channel.email = "example@example.com";
        channel.subscriber.add("subscriber 1");

        // create a new video
        Video video = new Video();
        video.videoName = "this is a video";

        // add video to channel
        channel.videos.add(video);

        // get number of videos
        System.out.println(channel.numberOfVideos());
    }
}
0 голосов
/ 11 марта 2020
There is no struct in Java. Rather, you have to use class to do it.
    public class Channel {
        public char email[] = new char[100];
        public char password []= new char[100];
        public char channelName[]= new char[100];
        public char subscriber[][] = new char[100][];
        public int numberOfSubscriber;
        public int numberOfVideos;

        public Video[] videos = new Video[100];

        public static class Video {
            public String videoId ;
            public String videoName ;
            public String videoDuration ;
            public String videoTag ;
        }

        public static void main(String[] args) {

            //For Initilizing
            Channel[] channels = new Channel[100];
            for(int i = 0; i< 100; i++) {
                channels[i] = new Channel();
                //set values of channel
                for(int j=0; j<100;j++) {
                    channels[i].videos[j] = new Video();
                    //set values of videos
                }
            }

            // you can retrieve the information in the same way
        }
    }
0 голосов
/ 11 марта 2020

В Java нет структур. Вы должны использовать классы. Попробуйте это:

public class Channel {
    private String email;
    private String password;
    public Channel (String email, String password) {
        this.email = email;
        this.password = password;
    }
}

Тогда в основном:

Channel[] channels = new Channel[100];
for(int i = 0; i < channels.length; i++)
    channels[i] = new Channel(...);

И видео тоже будет классом, и в классе Channel будет поле типа Video[]

...