微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我们可以从数组列表中创建一个类的对象吗?

如何解决我们可以从数组列表中创建一个类的对象吗?

我们可以将数组的元素作为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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?