ArrayListProcessing.java
/* 
 *A program to perform some basic operations on a list of String names 
 */


package arraylistplay;
import java.util.ArrayList;
import java.util.List;

public class ArrayListProcessing {

    public static void main(String[] args) {
        //Point A: Add some strings which represent names to an ArrayList
        List<String> names = new ArrayList<>();
        names.add("Holiday, Billie");
        names.add("Claudel, Camille");
        names.add("Picasso, Pablo");
        names.add("Gallen-Kallela, Akseli");
        names.add("Zotto, Osvaldo");

        //POINT B: Create an Array list of just the first names using a for loop
        ArrayList<String> firstNames = new ArrayList<String>(firstNames(names));

        //POINT C: Use the String's join function to create and print a string of just the first names w/ each separated by a comma
        String firstNamesList = String.join(", ", firstNames);
        System.out.println("First names:" + firstNamesList);

        //POINT D: Print a comma-separated list of the last names
        ArrayList<String> lastNames = new ArrayList<String>(lastNames(names));
        String lastNamesList=String.join(", ", lastNames);
        System.out.println("Last names:" + lastNamesList);


        //POINT E: Print comma separated list of all uppercase first names from the list
       ArrayList<String> upperCaseNames=new ArrayList<String>(upperCase(names));
       List<String> upperCaseFirstNames=new ArrayList<String>(upperCase(firstNames(names)));
       String upperCaseFirstNamesList=String.join(", ", upperCaseFirstNames);
       System.out.println("Uppercase first names: "+upperCaseFirstNamesList);

        //Point F: Print comma separated list of hyphenated last names
        ArrayList<String> hyphenatedNames=new ArrayList<>(hyphenatedNames(names));
        ArrayList<String> hyphenatedLastNames=new ArrayList<>(hyphenatedNames(lastNames));
        String hyphenatedLastNamesList=String.join(", ",hyphenatedLastNames);
        System.out.println("Hyphenated last names: "+hyphenatedLastNamesList);

        //Point G: Print the integer value of the total length of all the names in the names ArrayList
        int totalLength=totalNameLength(names);
        System.out.println("Total length: "+totalLength);

        //Point H: Print the integer value of the total length in the firstNames ArrayList
        totalLength=totalNameLength(firstNames);
        System.out.println("Total first names length:"+totalLength);

        //Point I: Print the integer value of product of the length of the first names list
        totalLength=totalProductOfNameLength(firstNames);
        System.out.println("Product of first names:"+totalLength);




    }

    private static int totalProductOfNameLength(ArrayList<String> firstNames) {
        int total=1;
        for (String name:firstNames){
            total=total*name.length();
        } return total;
    }

    private static int totalNameLength(List<String> names) {
        int totalLength=0;
        for (String name:names){
            totalLength=totalLength+name.length();
        } return totalLength;
    }

    private static List<String> hyphenatedNames(List<String> names) {
        List<String> hyphenateds=new ArrayList<>();
        for (String name: names){
            if (name.contains("-")) {
                hyphenateds.add(name);
            }
        }
        return hyphenateds;
    }


    private static List<String> upperCase(List<String> names) {
        List<String>upperCaseNames=new ArrayList<>();
        for(String name: names){
            upperCaseNames.add(name.toUpperCase());
        }
        return upperCaseNames;
    }


    private static List<String> lastNames(List<String> names) {
        List<String>lasts=new ArrayList<>();
        for(String name:names){
            lasts.add(LastName(name));
        }
        return lasts;
    }

    private static String LastName(String name) {
        int commaPosition=name.indexOf(",");
        String lastName=name.substring(0, commaPosition);
        return lastName;
    }

    private static List<String> firstNames(List<String> names) {
        List<String> firsts = new ArrayList<>();
        for (String name : names) {
            firsts.add(firstName(name));
        }
        return firsts;
    }

    private static String firstName(String name) {
        int commaPosition = name.indexOf(",");
        String firstName = name.substring(commaPosition + 2, name.length());
        return firstName;


    }
}