如何解决我们可以从数组列表中创建一个类的对象吗?
我们可以将数组的元素作为Java中某个类的对象的名称传递吗?假设我用它的一些属性创建了一个类 Cars。
class Cars {
int maxSpeed;
int mileage;
public double roadTax(int manufactureYear){
int x = 150;
while((manufactureYear<2021) && (manufactureYear > 2010)){
for (int i = 2010; i < manufactureYear; i++)
x += (x + (0.10 *x));
return x;
}
}
我们可以使用通常的代码为这个类创建一些对象
Cars Volvo = new Cars();
假设我有一个品牌字符串数组,我想为数组中的每个元素创建一个对象
String[] carBrands= {"Volvo","BMW","Renault","Ford",..... }
是否有代码可以将列表中的所有元素作为类 Cars 的对象传递,而无需为每个元素编写一个。
解决方法
就个人而言,我会为此使用地图;
String[] carBrands = {"Volvo","BMW","Renault","Ford"};
Map<String,cars> cars = new HashMap<>();
for (int i = 0; i < carBrands.length; i++) {
cars.put(carBrands[i],new cars());
}
,
您已经在使用您的解决方案,只是方式不同。仅仅使用 String[]
就告诉我你知道如何处理对象数组。
这同样适用于您的类汽车。
此外,您的类 Cars 中没有指定构造函数。这将在调用 Cars Volvo = new Cars();
时导致空的 Cars-Objects。如果您为类生成了足够多的 setter,这可能是错误的。
是的,您可以,这在 Java 中称为泛型类型。您可以将 Car 对象传递给数组列表,如下所示:
ArrayList<Cars> arrCar = new ArrayList<>();
这使您能够将许多不同的对象放入数组列表中,并且在遍历数组时,您可以在每个索引处访问它们的元素。这是一个好的开始tutorial:
,让我们修改您的类,为品牌提供一个 getter 和一个构造函数。
class Cars {
int maxSpeed;
int mileage;
String brand;
public Cars(String brand) {
this.brand = brand;
}
public double roadTax(int manufactureYear){
int x = 150;
while((manufactureYear<2021) && (manufactureYear > 2010)){
for (int i = 2010; i < manufactureYear; i++)
x += (x + (0.10 *x));
return x;
}
public String getBrand() {
return brand;
}
}
然后您可以通过流式传输汽车品牌数组来创建地图。
String[] carBrands = { "Volvo","Ford" };
Map<String,List<Cars>> carMap =
Arrays.stream(carBrands).map(Cars::new).collect(
Collectors.groupingBy(Cars::getBrand));
以上为每个品牌创建了一个新的 Car
,然后将其添加到地图中,其中键是品牌,List<Cars>
是您创建的该品牌的所有卡片。>
如果每个品牌只有一种类型(即地图没有重复的键),您可以这样做。
Map<String,Cars> carMap1 =
Arrays.stream(carBrands).map(Cars::new).collect(
Collectors.toMap(Cars::getBrand,car -> car));
您可能希望将 Cars
类更改为 Car
,因为它代表一辆车。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。