adrianhmartinez
adrianhmartinez

Reputation: 115

Java print last name in arraylist

i have this

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");

how would i make a method to print out only the last name:

Pujols
Edmonds
Hamilton
Trout
Gonzalez
Fielder
Strasburg
Bautista

I have something like this but im stuck:

public static void printLastName(ArrayList<String> players) {
    for (int i = 0; i < players.size(); i++)
        System.out.println(players.get(i));
}

Upvotes: 0

Views: 3229

Answers (5)

Amir Afghani
Amir Afghani

Reputation: 38531

You could just introduce a 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;
        }     
    }

Upvotes: 1

Bhargav Modi
Bhargav Modi

Reputation: 2655

just split it space of String function split() using \\s because " " will not work in java

here is the example

 String lastname = players.get(i).Split("\\s+")[1]; //even split("\\s"); will also work

if you want do it with Pattern class use below code

private static final Pattern SPACE = Pattern.compile(" ");//outside for loop
String lastname = SPACE.split(players.get(i))[1]; // inside for loop

Upvotes: 0

pledez
pledez

Reputation: 349

You may want to let Arraylist hold a String array, such as

ArrayList<String[]> players = new ArrayList<String[]>();
String[] player1 = {"Albert", "Pujols"};
players.add(player1);
System.out.println(players.get(0)[1]);

Upvotes: 0

Masudul
Masudul

Reputation: 21961

I guess, all names are single space separated.So, just split and print last part

System.out.println(players.get(i).split(" ")[1]);

As, Alexis C mentioned, you should create a model class with firstName and lastName and store the class instances in List

Upvotes: 3

apgp88
apgp88

Reputation: 985

You should change your code to

public static void printLastName(ArrayList<String> players) {
for (int i = 0; i < players.size(); i++)
    System.out.println(players.get(i).split(" ")[1]);
}

Upvotes: 0

Related Questions