14.1 ArrayList

ArrayList Creation

import java.util.ArrayList;

public class Main {

    public static void main(String[] args) {

        // Creating an ArrayList of Strings

        ArrayList<String> list = new ArrayList<>();

        // Adding elements

        list.add("Apple");

        list.add("Banana");

        list.add("Cherry");

        // Printing the ArrayList

        System.out.println(list); // Output: [Apple, Banana, Cherry]

    }

}

2. ArrayList with Initial Capacity

ArrayList<Integer> numbers = new ArrayList<>(10);

3. Iterating Over an ArrayList

for (int i = 0; i < list.size(); i++) {
    System.out.println(list.get(i));
}

4. Removing Elements

list.remove("Banana"); // Removes by value
list.remove(0); // Removes by index

5. Checking if an Element Exists

if (list.contains("Apple")) {
    System.out.println("Apple is in the list!");
}

6. Clearing the ArrayList

list.clear(); // Removes all elements

14.1.2: ArrayLists with loops


import java.util.ArrayList;
import java.util.Scanner;

public class ArrayListAverage {
   public static void main(String[] args) {
      final int NUM_ELEMENTS = 8;
      Scanner scnr = new Scanner(System.in);
      ArrayList<Double> userNums = new ArrayList<Double>();

      Double sumVal;
      Double averageVal; 
      int i; 
      
      // Get user numbers and add to userNums
      System.out.println("Enter " + NUM_ELEMENTS + " numbers...");
      for (i = 0; i < NUM_ELEMENTS; ++i) {
         System.out.print("Number " + (i + 1) + ": ");
         userNums.add(scnr.nextDouble());
      }
      
      // Determine average value
      sumVal = 0.0;
      for (i = 0; i < userNums.size(); ++i) {
         sumVal = sumVal + userNums.get(i); // Calculate total value
      }
      averageVal = sumVal / userNums.size(); // Calculate average 
      
      System.out.println("Average: " + averageVal);
   }
} //can't us length for arraylist.length
import java.util.Scanner;
import java.util.ArrayList;

public class MakeWeightList {
   public static void main(String[] args) {
      Scanner scnr = new Scanner(System.in);
      int numWeights;
      int i;
      ArrayList<Double> weightList = new ArrayList<Double>();
      
      numWeights = scnr.nextInt();      
      
      for (i = 0; i < numWeights; ++i) {
         weightList.add(scnr.nextDouble());
      }
                
      // Traversing a list using indexes
      for (i = 0; i < weightList.size(); ++i) {
         System.out.print(weightList.get(i) + " ");
      }
      System.out.println();
   }
} //getting multiple inputs from the user

14.2 Classes and ArrayList

import java.util.Scanner;
import java.util.ArrayList;

public class Licenses {
   public static void main(String[] args) {
      Scanner scnr = new Scanner(System.in);
      ArrayList<License> licenseList = new ArrayList<License>();
      License currLicense;
      int entryNumber;
      int i;
      
      entryNumber = scnr.nextInt();
      while (entryNumber != -99) { 
         currLicense = new License();
         currLicense.readDetails(scnr); // Pass scanner to readDetails
         licenseList.add(currLicense);

         entryNumber = scnr.nextInt(); // Read the next entryNumber
      }

      for (i = 0; i < licenseList.size(); ++i) {
         currLicense = licenseList.get(i);
         currLicense.print();
      }
   }
}
import java.util.Scanner;
public class License {
   private String state;
   private char group;

   public void readDetails(Scanner scnr) {
      state = scnr.next();
      group = scnr.next().charAt(0);
    }

   public void print() {
      System.out.println("License: " + state + ", Group: " + group);
   }
}

Input

1 AK B

2 CO A

3 CA D

4 AZ C

-99

Your output

License: AK, Group: B

License: CO, Group: A

License: CA, Group: D

License: AZ, Group: C

Example

import java.util.Scanner;
import java.util.ArrayList;

public class Directory {
   private ArrayList<License> licenseList = new ArrayList<License>();

   public void inputLicenses(Scanner scnr) {
      License currLicense;
      String currState;
      int currFee;
      int licenseCount;
      int i;

      licenseCount = scnr.nextInt();
      for (i = 0; i < licenseCount; ++i) {
         currState = scnr.next();
         currFee = scnr.nextInt();
         currLicense = new License();
         currLicense.setStateAndFee(currState, currFee);
         licenseList.add(currLicense);
      }
   }

   public int findSmallestLicenseFee() {
      // Initialize minValue with the first element's fee
      int minValue = licenseList.get(0).getFee();
      
      // Loop through the list to find the smallest fee
      for (int i = 1; i < licenseList.size(); i++) {
         if (licenseList.get(i).getFee() < minValue) {
            minValue = licenseList.get(i).getFee();
         }
      }
      
      return minValue;
   }
      

}
public class License {
   private String state;
   private int fee;

   public void setStateAndFee(String newState, int newFee) {
      state = newState;
      fee = newFee;
   }

   public int getFee() {
      return fee;
   }
}
import java.util.Scanner;
import java.util.ArrayList;

public class LicenseSystem {
   public static void main(String[] args) {
      Scanner scnr = new Scanner(System.in);
      Directory directory = new Directory();

      directory.inputLicenses(scnr);
      System.out.println("Smallest license fee: " +           directory.findSmallestLicenseFee());
   }
}

Input: 3 OK 115 MA 135 MT 250

Your output

Smallest license fee: 115

Example2

import java.util.Scanner;
import java.util.ArrayList;

public class Inventory {
   private ArrayList<Lesson> lessonList = new ArrayList<Lesson>();
   Scanner scnr = new Scanner(System.in);

    public void inputLessons(Scanner scnr) {
      int currDuration;
      String currTopic;

      while (true) {
         currDuration = scnr.nextInt();  
         if (currDuration == -1) {
            break;  
         }
         currTopic = scnr.next(); 

         Lesson currLesson = new Lesson();  
         currLesson.setDetails(currDuration, currTopic);
         lessonList.add(currLesson);  
      }
   }

   public void printLessons() {
      Lesson currLesson;
      int i;

      for (i = 0; i < lessonList.size(); ++i) {
         currLesson = lessonList.get(i);
         currLesson.print();
      }
   }
}
public class Lesson {
   private int duration;
   private String topic;

   public void setDetails(int newDuration, String newTopic) {
	duration = newDuration;
	topic = newTopic;
   }

   public void print() {
      System.out.println("Lesson duration: " + duration + ", Topic: " + topic);
   }
}
import java.util.Scanner;
import java.util.ArrayList;

public class LessonSystem {
   public static void main(String[] args) {
      Scanner scnr = new Scanner(System.in);
      Inventory inventory = new Inventory();

      inventory.inputLessons(scnr);
      inventory.printLessons();
   }
}

Ex: If the input is 150 Cars 100 Hobbies 140 Fashion 60 Medicine -1, then the output is:

Lesson duration: 150, Topic: Cars Lesson duration: 100, Topic: Hobbies Lesson duration: 140, Topic: Fashion Lesson duration: 60, Topic: Medicine

15.1 Streams using Strings

import java.util.Scanner;

public class StringInputStream {
   public static void main(String[] args) {
      String userInfo;                  // Input string
      String firstName;                 // First name
      String lastName;                  // Last name
      int userAge;                      // Age

      userInfo = "Amy Smith 19";

      // Create new scanner object with String
      Scanner inSS = new Scanner(userInfo);

      // Parse name and age values from string
      firstName = inSS.next();
      lastName = inSS.next();
      userAge = inSS.nextInt();

      // Output parsed values
      System.out.println("First name: " + firstName);
      System.out.println("Last name: " + lastName);
      System.out.println("Age: " + userAge);
   }
}   //First name: Amy
    //Last name: Smith
    // Age: 19
import java.util.Scanner;
import java.io.PrintWriter;
import java.io.StringWriter;

public class StringOutputStream {
   public static void main(String[] args) {
      String item;
      int quantity;
      int discount;

      StringWriter itemCharStream = new StringWriter();
      PrintWriter itemOSS = new PrintWriter(itemCharStream);

      item = "Headphones";
      quantity = 18;
      discount = 40;

      itemOSS.println(item + " x" + quantity);
      itemOSS.print(discount + "% off");

      System.out.print(itemCharStream.toString());
   }
} // Headphones x18
  // 40% off
import java.util.Scanner;
import java.io.PrintWriter;
import java.io.StringWriter;

public class StringStreamOutput {
   public static void main (String [] args) {
      Scanner scnr = new Scanner(System.in);
      String userItem;

      StringWriter itemCharStream = new StringWriter();
      PrintWriter itemsOSS = new PrintWriter(itemCharStream);

      System.out.println("Enter items (type Exit to quit):");
      userItem = scnr.next();

      while (!userItem.equals("Exit")) {

         itemsOSS.print(userItem + " ");

         userItem = scnr.next();
      }

      userItem = itemCharStream.toString();
      System.out.println(userItem);
   }
} //output: Apples Kiwis Blueberries 

15.2 File input

import java.util.Scanner;
import java.io.FileInputStream;
import java.io.IOException;

public class FutonDataProcessor {
   public static void main(String[] args) throws IOException {
      Scanner scnr = new Scanner(System.in);
      String nameOfFile;
      int futonCount;

      FileInputStream furnitureStream = null;
      Scanner inFS = null;

      nameOfFile = scnr.next();

      furnitureStream = new FileInputStream(nameOfFile);
      inFS = new Scanner(furnitureStream);

      futonCount = inFS.nextInt();
      System.out.println(futonCount);

      furnitureStream.close();
   }
}
import java.util.Scanner;
import java.io.FileInputStream;
import java.io.IOException;

public class FileReading {
   public static void main(String[] args) throws IOException {
      Scanner scnr = new Scanner(System.in);
      FileInputStream fileByteStream = null;
      Scanner sofaFS = null;
      String dataFileName;
      int sofaCount;

      dataFileName = scnr.next();

      fileByteStream = new FileInputStream(dataFileName);
      sofaFS = new Scanner(fileByteStream);

      while (sofaFS.hasNextInt() ) {
         sofaCount = sofaFS.nextInt();

         System.out.println(sofaCount);
      }

      if (sofaFS.hasNext()) {
         System.out.println("Reading stopped at " + sofaFS.next());
      }
      else {
         System.out.println("Reached end of file");
      }

      fileByteStream.close();
   }
}  //Input: data2.txt
   //output:
   //17
   //51
   //Reached end of file