如何为主数组列表的元素创建“子数组列表”?
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);
}
}
输出:
以上是关于如何为主数组列表的元素创建“子数组列表”?的主要内容,如果未能解决你的问题,请参考以下文章