Java 在数组列表中打印姓氏
Java print last name in arraylist
我有这个
ArrayList<String> players = new ArrayList<String>();
players.add("Albert Pujols");
players.add("Jim Edmonds");
players.add("Josh Hamilton");
players.add("Mike Trout");
players.add("Adrian Gonzalez");
players.add("Price Fielder");
players.add("Steven Strasburg");
players.add("Jose Bautista");
players.add("Bryce Harper");
players.add("Mike Trout");
我如何创建一个只打印姓氏的方法:
Pujols
Edmonds
Hamilton
Trout
Gonzalez
Fielder
Strasburg
Bautista
我有类似的东西,但我卡住了:
public static void printLastName(ArrayList<String> players) {
for (int i = 0; i < players.size(); i++)
System.out.println(players.get(i));
}
我猜,所有名字都是单一的space separated.So,只是拆分并打印最后一部分
System.out.println(players.get(i).split(" ")[1]);
正如 Alexis C 提到的那样,您应该使用 firstName 和 lastName 创建一个模型 class 并将 class 实例存储在 List
中
您应该将代码更改为
public static void printLastName(ArrayList<String> players) {
for (int i = 0; i < players.size(); i++)
System.out.println(players.get(i).split(" ")[1]);
}
你可以介绍一个 Player
class.....
public class Player {
final String firstName;
final String lastName;
public Player(final String firstName, final String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
@Override
public String toString() {
return this.lastName;
}
@Override
public boolean equals(final Object o) {
if (this == o) {
return true;
}
if (!(o instanceof Player)) {
return false;
}
final Player player = (Player) o;
if (firstName != null ? !firstName.equals(player.firstName) : player.firstName != null) {
return false;
}
return !(lastName != null ? !lastName.equals(player.lastName) : player.lastName != null);
}
@Override
public int hashCode() {
int result = firstName != null ? firstName.hashCode() : 0;
result = 31 * result + (lastName != null ? lastName.hashCode() : 0);
return result;
}
}
只需使用 \s
拆分 String
函数 split()
的 space 因为“ ”在 java
中不起作用
这是例子
String lastname = players.get(i).Split("\s+")[1]; //even split("\s"); will also work
如果你想用 Pattern class
使用下面的代码
private static final Pattern SPACE = Pattern.compile(" ");//outside for loop
String lastname = SPACE.split(players.get(i))[1]; // inside for loop
你可能想让Arraylist持有一个String数组,比如
ArrayList<String[]> players = new ArrayList<String[]>();
String[] player1 = {"Albert", "Pujols"};
players.add(player1);
System.out.println(players.get(0)[1]);
我有这个
ArrayList<String> players = new ArrayList<String>();
players.add("Albert Pujols");
players.add("Jim Edmonds");
players.add("Josh Hamilton");
players.add("Mike Trout");
players.add("Adrian Gonzalez");
players.add("Price Fielder");
players.add("Steven Strasburg");
players.add("Jose Bautista");
players.add("Bryce Harper");
players.add("Mike Trout");
我如何创建一个只打印姓氏的方法:
Pujols
Edmonds
Hamilton
Trout
Gonzalez
Fielder
Strasburg
Bautista
我有类似的东西,但我卡住了:
public static void printLastName(ArrayList<String> players) {
for (int i = 0; i < players.size(); i++)
System.out.println(players.get(i));
}
我猜,所有名字都是单一的space separated.So,只是拆分并打印最后一部分
System.out.println(players.get(i).split(" ")[1]);
正如 Alexis C 提到的那样,您应该使用 firstName 和 lastName 创建一个模型 class 并将 class 实例存储在 List
中您应该将代码更改为
public static void printLastName(ArrayList<String> players) {
for (int i = 0; i < players.size(); i++)
System.out.println(players.get(i).split(" ")[1]);
}
你可以介绍一个 Player
class.....
public class Player {
final String firstName;
final String lastName;
public Player(final String firstName, final String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
@Override
public String toString() {
return this.lastName;
}
@Override
public boolean equals(final Object o) {
if (this == o) {
return true;
}
if (!(o instanceof Player)) {
return false;
}
final Player player = (Player) o;
if (firstName != null ? !firstName.equals(player.firstName) : player.firstName != null) {
return false;
}
return !(lastName != null ? !lastName.equals(player.lastName) : player.lastName != null);
}
@Override
public int hashCode() {
int result = firstName != null ? firstName.hashCode() : 0;
result = 31 * result + (lastName != null ? lastName.hashCode() : 0);
return result;
}
}
只需使用 \s
拆分 String
函数 split()
的 space 因为“ ”在 java
这是例子
String lastname = players.get(i).Split("\s+")[1]; //even split("\s"); will also work
如果你想用 Pattern class
使用下面的代码
private static final Pattern SPACE = Pattern.compile(" ");//outside for loop
String lastname = SPACE.split(players.get(i))[1]; // inside for loop
你可能想让Arraylist持有一个String数组,比如
ArrayList<String[]> players = new ArrayList<String[]>();
String[] player1 = {"Albert", "Pujols"};
players.add(player1);
System.out.println(players.get(0)[1]);