建立公司基类 AbstractCompany,成员方法自定。建立产品基类 Product,成 员方法自定。建立 AbstractCompany 的派生类 Company,应包括 Product 数 组,用于存放产品,能输出公司名称、地址、产品信息。建立 Company 对象, 华为(Huawei),大疆(Da-jiang),海康威视(Hikvision),比亚迪(BYD)。 建立 Product 对象,包括手机(Phone),无人机(UAV),摄像头(Camera), 汽车(Car),将 Product 对象赋值给 Company 对象。编写程序,建立公司列 表 ArrayList,输出公司信息及公司中产品数组的信息,并对公司列表按照名 称进行排序,输出排序后的结果。将 Company 和 Product 作为一个整体输出。
import lombok.Getter;
import lombok.Setter;
public class AbstractCompany {
@Setter
@Getter
private String companyName;
@Setter
@Getter
private String companyLoc;
}
import lombok.Getter;
import lombok.Setter;
import java.util.ArrayList;
import java.util.List;
public class Company extends AbstractCompany {
public Company(String name,String loc){
setCompanyName(name);
setCompanyLoc(loc);
}
@Setter
@Getter
private List<Product> productList = new ArrayList<>();
@Override
public String toString() {
return String.format("名称:%s,地址:%s,产品包括:%s", getCompanyName(),getCompanyLoc(),getProductList());
}
}
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;
@AllArgsConstructor
public class Product {
@Getter
@Setter
private String productName;
@Override
public String toString() {
return getProductName();
}
}
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
public class Test {
public static void main(String[] args) {
Company huawei = new Company("Huawei","Huawei总部");
Company daJiang = new Company("Da-jiang","Da-jiang总部");
Company hikvision = new Company("Hikvision","Hikvision总部");
Company byd = new Company("BYD","BYD总部");
Product phone = new Product("手机");
Product uav = new Product("无人机");
Product camera = new Product("摄像头");
Product car = new Product("汽车");
huawei.getProductList().add(phone);
daJiang.getProductList().add(uav);
hikvision.getProductList().add(camera);
byd.getProductList().add(car);
List<Company> companyList = new ArrayList<Company>();
companyList.add(huawei);
companyList.add(daJiang);
companyList.add(hikvision);
companyList.add(byd);
companyList.forEach(company -> System.out.println(company));
System.out.println("=============");
companyList.stream().sorted(Comparator.comparing(Company::getCompanyName)).forEach(company -> System.out.println(company));
}
}
输出结果:
名称:Huawei,地址:Huawei总部,产品包括:[手机]
名称:Da-jiang,地址:Da-jiang总部,产品包括:[无人机]
名称:Hikvision,地址:Hikvision总部,产品包括:[摄像头]
名称:BYD,地址:BYD总部,产品包括:[汽车]
=============
名称:BYD,地址:BYD总部,产品包括:[汽车]
名称:Da-jiang,地址:Da-jiang总部,产品包括:[无人机]
名称:Hikvision,地址:Hikvision总部,产品包括:[摄像头]
名称:Huawei,地址:Huawei总部,产品包括:[手机]
如果有用,请采纳下 谢谢!
参考如下:
公司基类 AbstractCompany
public abstract class AbstractCompany {
private String name;
private String address;
public AbstractCompany(String name, String address) {
this.name = name;
this.address = address;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
产品基类 Product
public class Product {
private String name;
public Product(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return name;
}
}
AbstractCompany 的派生类 Company
import java.util.ArrayList;
import java.util.List;
public class Company extends AbstractCompany {
private List<Product> products = new ArrayList<>();
public Company(String name, String address) {
super(name, address);
}
public List<Product> getProducts() {
return products;
}
public void setProducts(List<Product> products) {
this.products = products;
}
@Override
public String toString() {
return "公司名称:" + getName() + "\n公司地址:" + getAddress() + "\n公司产品:" + products;
}
}
测试类
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
public class Test {
public static void main(String[] args) {
Company huawei = new Company("Huawei", "华为公司的地址");
Company dajiang = new Company("Da-jiang", "大疆公司的地址");
Company hikvision = new Company("Hikvision", "海康威视公司的地址");
Company byd = new Company("BYD", "比亚迪公司的地址");
Product phone = new Product("手机");
Product uav = new Product("无人机");
Product camera = new Product("摄像头");
Product car = new Product("汽车");
huawei.getProducts().add(phone);
dajiang.getProducts().add(uav);
hikvision.getProducts().add(camera);
byd.getProducts().add(car);
List<Company> companyList = new ArrayList<>();
companyList.add(huawei);
companyList.add(dajiang);
companyList.add(hikvision);
companyList.add(byd);
companyList.forEach(company -> System.out.println(company));
System.out.println("==========================");
// 排序 按名称升序
companyList.sort(Comparator.comparing(Company::getName));
// 输出公司和产品
companyList.forEach(company -> System.out.println(company));
}
}
AbstractCompany.java
package com.it.txm.demo.learn;
public class AbstractCompany {
// 公司名
public String companyName;
// 公司地址
public String address;
public String getCompanyName() {
return companyName;
}
public void setCompanyName(String companyName) {
this.companyName = companyName;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "AbstractCompany{" +
"companyName='" + companyName + '\'' +
", address='" + address + '\'' +
'}';
}
}
Company.java
package com.it.txm.demo.learn;
import java.util.Arrays;
public class Company extends AbstractCompany {
// 产品信息
private Product[] productArray;
public Product[] getProductArray() {
return productArray;
}
public void setProductArray(Product[] productArray) {
this.productArray = productArray;
}
@Override
public String toString() {
return "Company{" +
"productArray=" + Arrays.toString(productArray) +
", companyName='" + companyName + '\'' +
", address='" + address + '\'' +
'}';
}
}
Product.java
package com.it.txm.demo.learn;
public class Product {
// 产品名
private String productName;
public String getProductName() {
return productName;
}
public void setProductName(String productName) {
this.productName = productName;
}
@Override
public String toString() {
return "Product{" +
"productName='" + productName + '\'' +
'}';
}
}
Test.java
package com.it.txm.demo.learn;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
public class Test {
public static void main(String[] args) {
// 创建公司信息
Company huawei = new Company();
huawei.setCompanyName("华为");
huawei.setAddress("深圳");
Company daJiang = new Company();
daJiang.setCompanyName("大疆");
daJiang.setAddress("新疆");
Company hikvision = new Company();
hikvision.setCompanyName("海康威视");
hikvision.setAddress("杭州");
Company BYD = new Company();
BYD.setCompanyName("比亚迪");
BYD.setAddress("北京");
// 创建产品信息
Product phone = new Product();
phone.setProductName("手机");
Product UAV = new Product();
UAV.setProductName("无人机");
Product camera = new Product();
camera.setProductName("摄像头");
Product car = new Product();
car.setProductName("汽车");
// 将产品赋值为给公司
Product[] product1 = new Product[1];
product1[0]=phone;
huawei.setProductArray(product1);
Product[] product2 = new Product[1];
product2[0]=UAV;
daJiang.setProductArray(product2);
Product[] product3 = new Product[1];
product3[0]=camera;
hikvision.setProductArray(product3);
Product[] product4 = new Product[1];
product4[0]=car;
BYD.setProductArray(product4);
// 创建公司列表
ArrayList<Company> companyArrayList = new ArrayList<>();
companyArrayList.add(huawei);
companyArrayList.add(daJiang);
companyArrayList.add(hikvision);
companyArrayList.add(BYD);
for (int i = 0; i < companyArrayList.size(); i++) {
System.out.println("输出公司信息及公司中产品数组的信息:"+companyArrayList.get(i));
}
System.out.println("====================================华丽的分割线=================================================");
// 按照公司名称进行排序
Collections.sort(companyArrayList, new Comparator<Company>() {
@Override
public int compare(Company o1, Company o2) {
return o1.getCompanyName().compareTo(o2.getCompanyName());
}
});
for (int i = 0; i < companyArrayList.size(); i++) {
System.out.println("按照公司名称进行排序后输出公司信息的信息:"+companyArrayList.get(i));
}
}
}
注意以上四个类复制使用的时候更换一下包名即可(package com.it.txm.demo.learn替换成自己的项目包路径)。
如果对感觉有帮助,欢迎采纳!
题目有了,问题呢?
.stream().sorted(Comparator.comparing(Company::getName).reversed()).collect(Collectors.toList()); 倒序 .reversed()取消正序