我在构造函数中得到了这些对象。
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(); }
}