Как создать «список подмассива» для элемента основного списка массива? - PullRequest
0 голосов
/ 02 апреля 2019

Я пытаюсь создать программу для отображения списков дел.Вот пример того, как я хотел бы, чтобы выходные данные выглядели так:

 Blue Spitfire
      Sanding
           Hood
           Doors
      Engine
           Oil pan seal
      Electrical
           Oil pressure light
           Headlight switch

Сейчас у меня есть один ArrayList для хранения названия транспортного средства (Blue Spitfire).Меня интересует, как хранить названия работ (шлифовка, двигатель, электрика) и особенности (капот, двери, сальник масляного поддона и т. Д.) Под каждым номером работы.

Подводя итог, в названии автомобиля хранятся вакансии,и рабочие места хранят специфику.Как мне это сделать?

Любая помощь приветствуется.

Ответы [ 2 ]

0 голосов
/ 02 апреля 2019

Надеюсь, это поможет.

import java.util.ArrayList;

class Vechicle {

    Vechicle(String vName) {
        vehicleName= vName;
    }
    String vehicleName;
    ArrayList<Job> jobs = new ArrayList<>();

    void addJob(Job j) {
        jobs.add(j);
    }
    @Override
    public String toString() {
        // TODO Auto-generated method stub
        String returnString = vehicleName ;
        for (Job j: jobs) {
            returnString = returnString+ "\r\n\t"+ j.jobName;
            for (String jobSpecifics: j.jobsSpecifics) {
                returnString = returnString+ "\r\n\t\t"+ jobSpecifics;
            }
        }
        return returnString;
    }
}

class Job {
    String jobName;
    ArrayList<String> jobsSpecifics = new ArrayList<>();
    Job(String jobName) {
        this.jobName= jobName;
    }
    void addJobSpecifics(String s) {
        jobsSpecifics.add (s);
    }
}

public class VechicleMain {

    public static void main(String[] args) {

        Vechicle v = new Vechicle("Blue Spitfire");
        Job j= new Job("Sanding");
        j.addJobSpecifics("Hood");
        j.addJobSpecifics("Doors");
        v.addJob(j);
        System.out.println(v);
        }
}

Вывод:

enter image description here

0 голосов
/ 02 апреля 2019

Вы можете использовать карту, в частности HashMap, для хранения списка связей между ключами и значениями, а также использовать список или набор, в частности HashSet, для хранения списков значений.

Но, как отмечено в комментариях, может быть лучше использовать комбинацию этого и классов.

Вот одна из возможных реализаций. (Вы можете сократить его, используя служебные классы для создания Наборов и Карт, например, из библиотеки Google Guava или библиотеки Apache Commons.)

import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;

class Job {
    String model;
    Map<String, Set<String>> areas;

    public Job(String model, Map<String, Set<String>> areas) {
        this.model = model;
        this.areas = areas;
    }

}

public class Example {

    public static void main(String[] args) {
        Map<String, Set<String>> areas = new HashMap<>();
        Set<String> sandingProblems = new HashSet<>();
        sandingProblems.add("Hood");
        sandingProblems.add("Doors");
        areas.put("Sanding", sandingProblems);
        Set<String> engineProblems = new HashSet<>();
        engineProblems.add("Oil panel seal");
        areas.put("Engine", engineProblems);
        Set<String> electricalProblems = new HashSet<>();
        electricalProblems.add("Oil pressure light");
        electricalProblems.add("Headlight switch");
        areas.put("Electrical", electricalProblems);
        Job job = new Job("Blue Spitfire", areas);

        System.out.println(job.model);
        for (Map.Entry<String, Set<String>> entry : areas.entrySet()) {
            System.out.println("\t" + entry.getKey());
            for (String problem : entry.getValue()) {
                System.out.println("\t\t" + problem);
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...