这听起来像是一个新手问题,但我仍在围绕核心Java概念开发我的知识。
我将以一个例子提出问题。
假设我有这些类,一个简单的getter setter。
第一个表示第二个列表。
public class JobList {
private List<Job> jobs;
public List<Job> getJobs() {
return jobs;
}
public void setJobs(List<Job> jobs) {
this.jobs = jobs;
}
然后。
public class Job {
private String name;
private String url;
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setUrl(String url) {
this.url = url;
}
public String getUrl() {
return url;
}
在另一个类中,我有方法做各种事情来返回包含我想要在getter和setter中的值的列表。
public List someMethod() {
//Loop through stuff to get a list of names
}
return nameList;
}
然后说......
public List someOtherMethod() {
//Loop through stuff to get a list of urls
}
return urlist;
}
我希望能够使用getter和setter检索这两种方法的信息,以便在应用程序的其他地方使用。但是我不确定如何在不将getter和setter放在与上述两种方法相同的类中的情况下如何做到这一点。
我需要这样做,还是有另一种更简单的方法/标准做法来做到这一点?
答案 0 :(得分:1)
你是说这个吗?
Set<String> collectNames(JobList jobList) {
Set<String> names = new HashSet<>();
for(Job job : jobList.getJobs()) {
names.add(job.getName());
}
return names;
}
此方法从JobList中收集所有唯一的(因此Set而不是List)名称。
编辑:
从main方法中使用此方法来打印所有作业名称,执行以下操作:
public static void main(String[] args) {
JobList jobList = new jobList();
// TODO: populate jobList with an array of Jobs
Set<String> names = collectNames(jobList);
// below implicitly AbstractCollection.toString() is called which returns a comma-separated representation of the contents
System.out.println(names);
}
编辑2:
该方法返回Set。您可以迭代Set以依次获取其所有元素:
// ...
Set<String> names = collectNames(jobList);
Iterator<String> it = names.iterator();
while(it.hasNext()) {
String name = it.next();
System.out.println(name);
}
答案 1 :(得分:0)
一般来说,我是Adriaan的第二个答案,但如果可能的话,我会利用Java 8的功能:
Set<String> collectNames(JobList jobList) {
return jobList.getJobs().stream()
.map(Job::getName)
.collect(Collectors.toSet());
}