面试题答案
一键面试import java.util.ArrayList;
import java.util.List;
class Person {
private String name;
private int age;
private String gender;
public Person(String name, int age, String gender) {
this.name = name;
this.age = age;
this.gender = gender;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public String getGender() {
return gender;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
", gender='" + gender + '\'' +
'}';
}
}
public class StringParser {
public static List<Person> parseString(String input) {
List<Person> personList = new ArrayList<>();
if (input == null || input.isEmpty()) {
return personList;
}
String[] parts = input.split("\\|");
for (String part : parts) {
String[] subParts = part.split(":");
if (subParts.length == 3) {
String name = subParts[0];
try {
int age = Integer.parseInt(subParts[1]);
String gender = subParts[2];
personList.add(new Person(name, age, gender));
} catch (NumberFormatException e) {
// 处理年龄格式不正确的情况
System.err.println("Invalid age format in part: " + part);
}
} else {
// 处理子串格式不正确的情况
System.err.println("Invalid part format: " + part);
}
}
return personList;
}
public static void main(String[] args) {
String input = "John:30:Male|Jane:25:Female";
List<Person> result = parseString(input);
for (Person person : result) {
System.out.println(person);
}
}
}
上述代码实现了将给定格式的字符串解析为Person
对象,并存储在List
集合中的功能。代码做了如下处理:
- 健壮性处理:
- 检查输入字符串是否为空或
null
,如果是则返回空的List
。 - 对每个子串按
:
进行分割后,检查分割后的数组长度是否为3,不是则提示格式不正确。 - 对年龄部分进行
NumberFormatException
异常捕获,处理年龄格式不正确的情况。
- 检查输入字符串是否为空或
- 效率考虑:
- 使用
split
方法将字符串按|
和:
进行分割,这是Java字符串处理中较为高效的方式。 - 使用
ArrayList
存储解析后的Person
对象,ArrayList
在添加元素方面有较好的性能。
- 使用