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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何为主数组列表的元素创建“子数组列表”?相关的知识,希望对你有一定的参考价值。

我正在尝试创建一个程序来显示车辆“待办事项”列表。这是我想要输出的样子的一个例子。

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

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

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

任何帮助表示赞赏。

答案

您可以使用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("	" + entry.getKey());
            for (String problem : entry.getValue()) {
                System.out.println("		" + 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+ "
	"+ j.jobName;
            for (String jobSpecifics: j.jobsSpecifics) {
                returnString = returnString+ "
		"+ 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

以上是关于如何为主数组列表的元素创建“子数组列表”?的主要内容,如果未能解决你的问题,请参考以下文章

如何为元素数组动态创建查询?

如何为每个数组元素创建一个计数器?

如何为 c++ 的不同变量类型的结构元素创建动态数组?

如何为静态数组创建我的个人 ToList() 函数

在子数组列表中创建并查找最大值

mongodb:如何为每个数组元素创建_id?