包含不带空值的所有对象属性的字符串



我在构造函数中得到了这些对象。

cars.add(new Car(2016, "honda", "civic"));
cars.add(new Car(2017, "Lamborghini", "aventador"));
cars.add(new Car(2000, null, "caravan"));
cars.add(new Car(2010, "dodge", null));

我需要以以下格式从中返回所有数据: 本田公民兰博基尼亚文塔多大篷车道奇

我的函数是:

public String listAllCars()
{
String result;
result = null;
if(cars == null)
{
throw new IllegalArgumentException("c cannot be null");
}
for(Car car: cars)
{
if(car.getMake() != null || car.getModel() != null) 
{
result += car.getMake() + car.getModel();
}
}
return result; 
}

但我最终得到了nullhondacivicLamborghiniaventadornullcaravandodgenull而不是hondacivicLamborghiniaventadorcaravandodge.

如果不是独立null,则需要附加每个字段。为了紧凑起见,您可以使用Objects.toString.为了提高效率,一个简单的if就可以了。

如果您可以使用流 API:

public String listAllCars() {
if (cars == null) {
throw new IllegalArgumentException("c cannot be null");
}
return cars.stream()
.map(c -> Objects.toString(c.getMake(), "")
+ Objects.toString(c.getModel(), ""))
.reduce("", (a, b) -> a + b);
}

或者,使用命令式样式,但带有StringBuilder

public String listAllCars() {
if (cars == null) {
throw new IllegalArgumentException("c cannot be null");
}
StringBuilder result = new StringBuilder();
for (Car car : cars) {
result.append(Objects.toString(car.getMake(), ""));
result.append(Objects.toString(car.getModel(), ""));
}
return result.toString();
}

或者,没有StringBuilder

public String listAllCars() {
if (cars == null) {
throw new IllegalArgumentException("c cannot be null");
}
String result = "";
for (Car car : cars) {
result += Objects.toString(car.getMake(), "");
result += Objects.toString(car.getModel(), "");
}
return result;
}

您正在检查品牌或型号中的任何一个是否不为空。但是,您的案例要求您单独检查品牌和型号,并在存在时连接。

for(Car car: cars) {
if(car.getMake() != null) { result += car.getMake(); }
if(car.getModel() != null) { result += car.getModel(); }
}

相关内容

  • 没有找到相关文章

最新更新