繁体   English   中英

如何为主数组列表的元素创建“子数组列表”?

[英]How to I create a "sub array-list" for an element of a main array-list?

我正在尝试创建一个程序来显示车辆“待办事项”列表。 这是我希望 output 看起来像的示例。

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

现在,我有一个 ArrayList 来存储车辆名称(蓝色喷火)。 我想知道如何在每个工作编号下存储工作名称(打磨、发动机、电气)和细节(引擎盖、门、油底壳密封等)。

总而言之,车辆名称存储作业,作业存储细节。 我该怎么做呢?

任何帮助表示赞赏。

您可以使用 Map,特别是 HashMap 来存储键和值之间的关联列表,并使用 List 或 Set,特别是 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);
            }
        }
    }
}

尝试这个:

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);
        }
}

Output:

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM