1. FizzBuzz Problem
Question: Write a Java program that prints the numbers from 1 to 100. But for multiples of three, print “Fizz” instead of the number and for the multiples of five, print “Buzz”. For numbers which are multiples of both three and five, print “FizzBuzz”.
public class FizzBuzz {
public static void main(String[] args) {
for (int i = 1; i <= 100; i++) {
if (i % 3 == 0 && i % 5 == 0) {
System.out.println("FizzBuzz");
} else if (i % 3 == 0) {
System.out.println("Fizz");
} else if (i % 5 == 0) {
System.out.println("Buzz");
} else {
System.out.println(i);
}
}
}
}
2. Reverse a String
Question: Write a Java program to reverse a string without using the built-in reverse method.
public class ReverseString {
public static void main(String[] args) {
String str = "Hello, World!";
String reversed = reverse(str);
System.out.println(reversed);
}
public static String reverse(String str) {
if (str == null || str.length() == 0) {
return str;
}
StringBuilder sb = new StringBuilder();
for (int i = str.length() - 1; i >= 0; i--) {
sb.append(str.charAt(i));
}
return sb.toString();
}
}
3. Check for Palindrome
Question: Write a Java program to check if a given string is a palindrome.
public class Palindrome {
public static void main(String[] args) {
String str = "madam";
boolean isPalindrome = isPalindrome(str);
System.out.println(str + " is palindrome? " + isPalindrome);
}
public static boolean isPalindrome(String str) {
int left = 0;
int right = str.length() - 1;
while (left < right) {
if (str.charAt(left) != str.charAt(right)) {
return false;
}
left++;
right--;
}
return true;
}
}
4. Find the Missing Number
Question: Write a Java program to find the missing number in an array of size n
containing numbers from 1 to n
.
public class MissingNumber {
public static void main(String[] args) {
int[] arr = {1, 2, 4, 5, 6};
int missingNumber = findMissingNumber(arr);
System.out.println("Missing number is: " + missingNumber);
}
public static int findMissingNumber(int[] arr) {
int n = arr.length + 1;
int sum = (n * (n + 1)) / 2;
int arrSum = 0;
for (int num : arr) {
arrSum += num;
}
return sum - arrSum;
}
}
5. Fibonacci Series
Question: Write a Java program to print the first n
Fibonacci numbers.
public class Fibonacci {
public static void main(String[] args) {
int n = 10;
printFibonacci(n);
}
public static void printFibonacci(int n) {
int a = 0, b = 1;
System.out.print(a + " " + b);
for (int i = 2; i < n; i++) {
int next = a + b;
System.out.print(" " + next);
a = b;
b = next;
}
}
}
6. Anagram Check
Question: Write a Java program to check if two strings are anagrams of each other.
import java.util.Arrays;
public class AnagramCheck {
public static void main(String[] args) {
String str1 = "listen";
String str2 = "silent";
boolean isAnagram = areAnagrams(str1, str2);
System.out.println(str1 + " and " + str2 + " are anagrams? " + isAnagram);
}
public static boolean areAnagrams(String str1, String str2) {
if (str1.length() != str2.length()) {
return false;
}
char[] charArray1 = str1.toCharArray();
char[] charArray2 = str2.toCharArray();
Arrays.sort(charArray1);
Arrays.sort(charArray2);
return Arrays.equals(charArray1, charArray2);
}
}
7. Factorial Calculation
Question: Write a Java program to calculate the factorial of a number using recursion.
public class Factorial {
public static void main(String[] args) {
int number = 5;
int result = factorial(number);
System.out.println("Factorial of " + number + " is: " + result);
}
public static int factorial(int n) {
if (n == 0) {
return 1;
}
return n * factorial(n - 1);
}
}
8. Find the Second Largest Number in an Array
Question: Write a Java program to find the second largest number in an array.
public class SecondLargest {
public static void main(String[] args) {
int[] arr = {10, 5, 20, 8, 12};
int secondLargest = findSecondLargest(arr);
System.out.println("Second largest number is: " + secondLargest);
}
public static int findSecondLargest(int[] arr) {
int firstLargest = Integer.MIN_VALUE;
int secondLargest = Integer.MIN_VALUE;
for (int num : arr) {
if (num > firstLargest) {
secondLargest = firstLargest;
firstLargest = num;
} else if (num > secondLargest && num != firstLargest) {
secondLargest = num;
}
}
return secondLargest;
}
}
9. Sum of Digits in a Number
Question: Write a Java program to find the sum of the digits of a given number.
public class SumOfDigits {
public static void main(String[] args) {
int number = 12345;
int sum = sumOfDigits(number);
System.out.println("Sum of digits of " + number + " is: " + sum);
}
public static int sumOfDigits(int number) {
int sum = 0;
while (number != 0) {
sum += number % 10;
number /= 10;
}
return sum;
}
}
10. Print All Permutations of a String
Question: Write a Java program to print all permutations of a given string.
public class Permutations {
public static void main(String[] args) {
String str = "ABC";
permute(str, 0, str.length() - 1);
}
public static void permute(String str, int l, int r) {
if (l == r) {
System.out.println(str);
} else {
for (int i = l; i <= r; i++) {
str = swap(str, l, i);
permute(str, l + 1, r);
str = swap(str, l, i); // backtrack
}
}
}
public static String swap(String str, int i, int j) {
char[] charArray = str.toCharArray();
char temp = charArray[i];
charArray[i] = charArray[j];
charArray[j] = temp;
return String.valueOf(charArray);
}
}
Collection Programs
1. Write a Java program to demonstrate the use of ArrayList
.
import java.util.ArrayList;
import java.util.List;
public class ArrayListExample {
public static void main(String[] args) {
List<String> fruits = new ArrayList<>();
// Adding elements
fruits.add("Apple");
fruits.add("Banana");
fruits.add("Orange");
// Iterating through the list
for (String fruit : fruits) {
System.out.println(fruit);
}
// Getting an element
System.out.println("First fruit: " + fruits.get(0));
// Removing an element
fruits.remove("Banana");
System.out.println("After removing Banana: " + fruits);
// Checking size
System.out.println("Size of the list: " + fruits.size());
}
}
2. Write a Java program to demonstrate the use of LinkedList
.
import java.util.LinkedList;
public class LinkedListExample {
public static void main(String[] args) {
LinkedList<String> animals = new LinkedList<>();
// Adding elements
animals.add("Dog");
animals.add("Cat");
animals.add("Horse");
// Iterating through the list
for (String animal : animals) {
System.out.println(animal);
}
// Adding elements at the beginning and end
animals.addFirst("Elephant");
animals.addLast("Zebra");
System.out.println("After adding elements at beginning and end: " + animals);
// Removing first and last elements
animals.removeFirst();
animals.removeLast();
System.out.println("After removing first and last elements: " + animals);
// Checking size
System.out.println("Size of the list: " + animals.size());
}
}
3. Write a Java program to demonstrate the use of HashSet
.
import java.util.HashSet;
import java.util.Set;
public class HashSetExample {
public static void main(String[] args) {
Set<String> countries = new HashSet<>();
// Adding elements
countries.add("USA");
countries.add("Canada");
countries.add("Mexico");
// Attempting to add a duplicate element
countries.add("USA");
// Iterating through the set
for (String country : countries) {
System.out.println(country);
}
// Checking if an element exists
System.out.println("Contains Canada? " + countries.contains("Canada"));
// Removing an element
countries.remove("Mexico");
System.out.println("After removing Mexico: " + countries);
// Checking size
System.out.println("Size of the set: " + countries.size());
}
}
4. Write a Java program to demonstrate the use of TreeSet
.
import java.util.TreeSet;
public class TreeSetExample {
public static void main(String[] args) {
TreeSet<Integer> numbers = new TreeSet<>();
// Adding elements
numbers.add(10);
numbers.add(5);
numbers.add(15);
// Iterating through the set
for (Integer number : numbers) {
System.out.println(number);
}
// Getting the first and last elements
System.out.println("First element: " + numbers.first());
System.out.println("Last element: " + numbers.last());
// Removing an element
numbers.remove(10);
System.out.println("After removing 10: " + numbers);
// Checking size
System.out.println("Size of the set: " + numbers.size());
}
}
5. Write a Java program to demonstrate the use of HashMap
.
import java.util.HashMap;
import java.util.Map;
public class HashMapExample {
public static void main(String[] args) {
Map<String, Integer> ages = new HashMap<>();
// Adding elements
ages.put("Alice", 30);
ages.put("Bob", 25);
ages.put("Charlie", 35);
// Iterating through the map
for (Map.Entry<String, Integer> entry : ages.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
// Getting an element
System.out.println("Alice's age: " + ages.get("Alice"));
// Removing an element
ages.remove("Bob");
System.out.println("After removing Bob: " + ages);
// Checking size
System.out.println("Size of the map: " + ages.size());
}
}
6. Write a Java program to demonstrate the use of TreeMap
.
import java.util.Map;
import java.util.TreeMap;
public class TreeMapExample {
public static void main(String[] args) {
TreeMap<String, Integer> scores = new TreeMap<>();
// Adding elements
scores.put("Alice", 85);
scores.put("Bob", 90);
scores.put("Charlie", 80);
// Iterating through the map
for (Map.Entry<String, Integer> entry : scores.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
// Getting the first and last entries
System.out.println("First entry: " + scores.firstEntry());
System.out.println("Last entry: " + scores.lastEntry());
// Removing an element
scores.remove("Bob");
System.out.println("After removing Bob: " + scores);
// Checking size
System.out.println("Size of the map: " + scores.size());
}
}
7. Write a Java program to demonstrate the use of PriorityQueue
.
import java.util.PriorityQueue;
public class PriorityQueueExample {
public static void main(String[] args) {
PriorityQueue<Integer> queue = new PriorityQueue<>();
// Adding elements
queue.add(10);
queue.add(5);
queue.add(15);
// Iterating through the queue
while (!queue.isEmpty()) {
System.out.println(queue.poll());
}
}
}
8. Write a Java program to demonstrate the use of Stack
import java.util.Stack;
public class StackExample {
public static void main(String[] args) {
Stack<String> stack = new Stack<>();
// Pushing elements onto the stack
stack.push("Apple");
stack.push("Banana");
stack.push("Cherry");
// Popping elements from the stack
while (!stack.isEmpty()) {
System.out.println(stack.pop());
}
}
}
9. Write a Java program to demonstrate the use of Queue
implemented using LinkedList
.
import java.util.LinkedList;
import java.util.Queue;
public class QueueExample {
public static void main(String[] args) {
Queue<String> queue = new LinkedList<>();
// Adding elements
queue.add("Apple");
queue.add("Banana");
queue.add("Cherry");
// Polling elements from the queue
while (!queue.isEmpty()) {
System.out.println(queue.poll());
}
}
}
10. Write a Java program to demonstrate the use of Deque
implemented using ArrayDeque
import java.util.ArrayDeque;
import java.util.Deque;
public class DequeExample {
public static void main(String[] args) {
Deque<String> deque = new ArrayDeque<>();
// Adding elements to both ends
deque.addFirst("Apple");
deque.addLast("Banana");
deque.addFirst("Cherry");
// Iterating through the deque
while (!deque.isEmpty()) {
System.out.println(deque.pollFirst());
}
}
}
Java 8 Features
1. Lambda Expressions
Question: Write a Java program to demonstrate the use of lambda expressions.
import java.util.Arrays;
import java.util.List;
public class LambdaExample {
public static void main(String[] args) {
List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
// Using lambda expression to iterate through the list
names.forEach(name -> System.out.println(name));
}
}
2. Functional Interfaces
Question: Write a Java program to demonstrate the use of functional interfaces.
import java.util.function.Predicate;
public class FunctionalInterfaceExample {
public static void main(String[] args) {
Predicate<Integer> isEven = number -> number % 2 == 0;
System.out.println("Is 4 even? " + isEven.test(4));
System.out.println("Is 5 even? " + isEven.test(5));
}
}
3. Streams API
Question: Write a Java program to demonstrate the use of the Streams API.
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class StreamsExample {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
// Using Streams API to filter even numbers and collect them into a list
List<Integer> evenNumbers = numbers.stream()
.filter(number -> number % 2 == 0)
.collect(Collectors.toList());
System.out.println("Even numbers: " + evenNumbers);
}
}
4. Optional Class
Question: Write a Java program to demonstrate the use of the Optional
class.
import java.util.Optional;
public class OptionalExample {
public static void main(String[] args) {
String[] words = new String[10];
words[2] = "hello";
Optional<String> checkNull = Optional.ofNullable(words[2]);
checkNull.ifPresent(System.out::println);
// Using Optional to handle a potential null value
Optional<String> word = Optional.ofNullable(words[5]);
String result = word.orElse("Default value");
System.out.println(result);
}
}
5. Method References
Question: Write a Java program to demonstrate the use of method references.
import java.util.Arrays;
import java.util.List;
public class MethodReferenceExample {
public static void main(String[] args) {
List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
// Using method reference to iterate through the list
names.forEach(System.out::println);
}
}
6. Default Methods in Interfaces
Question: Write a Java program to demonstrate default methods in interfaces.
interface Vehicle {
default void print() {
System.out.println("I am a vehicle.");
}
static void blowHorn() {
System.out.println("Blowing horn!!!");
}
}
class Car implements Vehicle {
@Override
public void print() {
System.out.println("I am a car.");
}
}
public class DefaultMethodsExample {
public static void main(String[] args) {
Vehicle car = new Car();
car.print(); // Calls the overridden method in Car
Vehicle.blowHorn(); // Calls the static method in Vehicle interface
}
}
7. New Date and Time API
Question: Write a Java program to demonstrate the new Date and Time API.
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
public class DateTimeExample {
public static void main(String[] args) {
LocalDate date = LocalDate.now();
System.out.println("Current Date: " + date);
LocalTime time = LocalTime.now();
System.out.println("Current Time: " + time);
LocalDateTime dateTime = LocalDateTime.now();
System.out.println("Current DateTime: " + dateTime);
// Formatting DateTime
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy HH:mm:ss");
String formattedDateTime = dateTime.format(formatter);
System.out.println("Formatted DateTime: " + formattedDateTime);
}
}
8. Stream Reduction
Question: Write a Java program to demonstrate stream reduction.
import java.util.Arrays;
import java.util.List;
public class StreamReductionExample {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
// Using reduce() to calculate the sum of the list
int sum = numbers.stream()
.reduce(0, (a, b) -> a + b);
System.out.println("Sum: " + sum);
// Using method reference with reduce()
int product = numbers.stream()
.reduce(1, Math::multiplyExact);
System.out.println("Product: " + product);
}
}
9. Parallel Streams
Question: Write a Java program to demonstrate parallel streams.
import java.util.Arrays;
import java.util.List;
public class ParallelStreamsExample {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
// Using parallel stream to filter even numbers
List<Integer> evenNumbers = numbers.parallelStream()
.filter(number -> number % 2 == 0)
.collect(Collectors.toList());
System.out.println("Even numbers: " + evenNumbers);
}
}
10. Collectors
Question: Write a Java program to demonstrate the use of Collectors
.
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class CollectorsExample {
public static void main(String[] args) {
List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "David", "Edward");
// Using Collectors to group names by their starting letter
Map<Character, List<String>> groupedByFirstLetter = names.stream()
.collect(Collectors.groupingBy(name -> name.charAt(0)));
groupedByFirstLetter.forEach((letter, group) -> {
System.out.println(letter + ": " + group);
});
}
}
11. Stream Operations: map()
Question: Write a Java program to demonstrate the use of the map()
method in streams.
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class StreamMapExample {
public static void main(String[] args) {
List<String> names = Arrays.asList("alice", "bob", "charlie");
// Using map() to convert all names to uppercase
List<String> upperCaseNames = names.stream()
.map(String::toUpperCase)
.collect(Collectors.toList());
System.out.println(upperCaseNames);
}
}
12. Stream Operations: flatMap()
Question: Write a Java program to demonstrate the use of the flatMap()
method in streams.
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class StreamFlatMapExample {
public static void main(String[] args) {
List<List<String>> namesList = Arrays.asList(
Arrays.asList("Alice", "Bob"),
Arrays.asList("Charlie", "David"),
Arrays.asList("Edward", "Frank")
);
// Using flatMap() to flatten the list of lists into a single list
List<String> flatList = namesList.stream()
.flatMap(List::stream)
.collect(Collectors.toList());
System.out.println(flatList);
}
}
13. Stream Operations: sorted()
Question: Write a Java program to demonstrate the use of the sorted()
method in streams.
import java.util.Arrays;
import java.util.List;
public class StreamSortedExample {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(5, 3, 9, 1, 4, 2);
// Using sorted() to sort the list in natural order
List<Integer> sortedNumbers = numbers.stream()
.sorted()
.collect(Collectors.toList());
System.out.println(sortedNumbers);
}
}
14. Stream Operations: distinct()
Question: Write a Java program to demonstrate the use of the distinct()
method in streams.
import java.util.Arrays;
import java.util.List;
public class StreamDistinctExample {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(1, 2, 3, 2, 4, 5, 1, 6);
// Using distinct() to remove duplicates from the list
List<Integer> distinctNumbers = numbers.stream()
.distinct()
.collect(Collectors.toList());
System.out.println(distinctNumbers);
}
}
15. Stream Operations: peek()
Question: Write a Java program to demonstrate the use of the peek()
method in streams.
import java.util.Arrays;
import java.util.List;
public class StreamPeekExample {
public static void main(String[] args) {
List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
// Using peek() to log the elements during the stream processing
List<String> processedNames = names.stream()
.peek(name -> System.out.println("Processing: " + name))
.map(String::toUpperCase)
.collect(Collectors.toList());
System.out.println(processedNames);
}
}
16. Stream Operations: count()
Question: Write a Java program to demonstrate the use of the count()
method in streams.
import java.util.Arrays;
import java.util.List;
public class StreamCountExample {
public static void main(String[] args) {
List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "David", "Edward");
// Using count() to count the number of elements in the stream
long count = names.stream()
.filter(name -> name.length() > 3)
.count();
System.out.println("Number of names longer than 3 characters: " + count);
}
}
17. Stream Operations: findFirst()
Question: Write a Java program to demonstrate the use of the findFirst()
method in streams.
import java.util.Arrays;
import java.util.List;
public class StreamFindFirstExample {
public static void main(String[] args) {
List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
// Using findFirst() to find the first element in the stream
String firstElement = names.stream()
.findFirst()
.orElse("No elements");
System.out.println("First element: " + firstElement);
}
}
18. Stream Operations: reduce()
Question: Write a Java program to demonstrate the use of the reduce()
method in streams.
import java.util.Arrays;
import java.util.List;
public class StreamReduceExample {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
// Using reduce() to calculate the sum of all elements in the list
int sum = numbers.stream()
.reduce(0, (a, b) -> a + b);
System.out.println("Sum: " + sum);
// Using method reference with reduce()
int product = numbers.stream()
.reduce(1, Math::multiplyExact);
System.out.println("Product: " + product);
}
}
19. Stream Operations: collect()
Question: Write a Java program to demonstrate the use of the collect()
method in streams.
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class StreamCollectExample {
public static void main(String[] args) {
List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
// Using collect() to convert the stream into a list
List<String> upperCaseNames = names.stream()
.map(String::toUpperCase)
.collect(Collectors.toList());
System.out.println(upperCaseNames);
}
}
20. Stream Operations: groupingBy()
Question: Write a Java program to demonstrate the use of the groupingBy()
method in streams.
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class StreamGroupingByExample {
public static void main(String[] args) {
List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "David", "Edward");
// Using groupingBy() to group names by their starting letter
Map<Character, List<String>> groupedByFirstLetter = names.stream()
.collect(Collectors.groupingBy(name -> name.charAt(0)));
groupedByFirstLetter.forEach((letter, group) -> {
System.out.println(letter + ": " + group);
});
}
}
JDBC programs in Java
1. Connect to a Database
Question: Write a Java program to demonstrate connecting to a database using JDBC
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class JdbcConnectExample {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/mydatabase";
String username = "root";
String password = "password";
try (Connection connection = DriverManager.getConnection(url, username, password)) {
if (connection != null) {
System.out.println("Connected to the database!");
} else {
System.out.println("Failed to connect to the database.");
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
2. Create a Table
Question: Write a Java program to create a table using JDBC.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class JdbcCreateTableExample {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/mydatabase";
String username = "root";
String password = "password";
String createTableSQL = "CREATE TABLE IF NOT EXISTS users ("
+ "id INT AUTO_INCREMENT PRIMARY KEY, "
+ "name VARCHAR(100) NOT NULL, "
+ "email VARCHAR(100) NOT NULL UNIQUE, "
+ "created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP)";
try (Connection connection = DriverManager.getConnection(url, username, password);
Statement statement = connection.createStatement()) {
statement.execute(createTableSQL);
System.out.println("Table 'users' created successfully.");
} catch (SQLException e) {
e.printStackTrace();
}
}
}
3. Insert Data into a Table
Question: Write a Java program to insert data into a table using JDBC.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class JdbcInsertExample {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/mydatabase";
String username = "root";
String password = "password";
String insertSQL = "INSERT INTO users (name, email) VALUES (?, ?)";
try (Connection connection = DriverManager.getConnection(url, username, password);
PreparedStatement preparedStatement = connection.prepareStatement(insertSQL)) {
preparedStatement.setString(1, "John Doe");
preparedStatement.setString(2, "john.doe@example.com");
int row = preparedStatement.executeUpdate();
System.out.println(row + " row(s) inserted.");
} catch (SQLException e) {
e.printStackTrace();
}
}
}
4. Retrieve Data from a Table
Question: Write a Java program to retrieve data from a table using JDBC.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class JdbcSelectExample {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/mydatabase";
String username = "root";
String password = "password";
String selectSQL = "SELECT * FROM users";
try (Connection connection = DriverManager.getConnection(url, username, password);
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(selectSQL)) {
while (resultSet.next()) {
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
String email = resultSet.getString("email");
System.out.println("ID: " + id + ", Name: " + name + ", Email: " + email);
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
5. Update Data in a Table
Question: Write a Java program to update data in a table using JDBC.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class JdbcUpdateExample {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/mydatabase";
String username = "root";
String password = "password";
String updateSQL = "UPDATE users SET email = ? WHERE name = ?";
try (Connection connection = DriverManager.getConnection(url, username, password);
PreparedStatement preparedStatement = connection.prepareStatement(updateSQL)) {
preparedStatement.setString(1, "new.email@example.com");
preparedStatement.setString(2, "John Doe");
int row = preparedStatement.executeUpdate();
System.out.println(row + " row(s) updated.");
} catch (SQLException e) {
e.printStackTrace();
}
}
}
6. Delete Data from a Table
Question: Write a Java program to delete data from a table using JDBC.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class JdbcDeleteExample {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/mydatabase";
String username = "root";
String password = "password";
String deleteSQL = "DELETE FROM users WHERE name = ?";
try (Connection connection = DriverManager.getConnection(url, username, password);
PreparedStatement preparedStatement = connection.prepareStatement(deleteSQL)) {
preparedStatement.setString(1, "John Doe");
int row = preparedStatement.executeUpdate();
System.out.println(row + " row(s) deleted.");
} catch (SQLException e) {
e.printStackTrace();
}
}
}
7. Handling Transactions
Question: Write a Java program to demonstrate transaction handling using JDBC.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class JdbcTransactionExample {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/mydatabase";
String username = "root";
String password = "password";
String insertSQL1 = "INSERT INTO users (name, email) VALUES (?, ?)";
String insertSQL2 = "INSERT INTO users (name, email) VALUES (?, ?)";
try (Connection connection = DriverManager.getConnection(url, username, password)) {
connection.setAutoCommit(false);
try (PreparedStatement preparedStatement1 = connection.prepareStatement(insertSQL1);
PreparedStatement preparedStatement2 = connection.prepareStatement(insertSQL2)) {
preparedStatement1.setString(1, "Alice");
preparedStatement1.setString(2, "alice@example.com");
preparedStatement1.executeUpdate();
preparedStatement2.setString(1, "Bob");
preparedStatement2.setString(2, "bob@example.com");
preparedStatement2.executeUpdate();
connection.commit();
System.out.println("Transaction committed successfully.");
} catch (SQLException e) {
connection.rollback();
System.out.println("Transaction rolled back.");
e.printStackTrace();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
8. Batch Processing
Question: Write a Java program to demonstrate batch processing using JDBC.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class JdbcBatchExample {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/mydatabase";
String username = "root";
String password = "password";
String insertSQL = "INSERT INTO users (name, email) VALUES (?, ?)";
try (Connection connection = DriverManager.getConnection(url, username, password);
PreparedStatement preparedStatement = connection.prepareStatement(insertSQL)) {
connection.setAutoCommit(false);
preparedStatement.setString(1, "User1");
preparedStatement.setString(2, "user1@example.com");
preparedStatement.addBatch();
preparedStatement.setString(1, "User2");
preparedStatement.setString(2, "user2@example.com");
preparedStatement.addBatch();
preparedStatement.setString(1, "User3");
preparedStatement.setString(2, "user3@example.com");
preparedStatement.addBatch();
int[] updateCounts = preparedStatement.executeBatch();
connection.commit();
System.out.println("Batch executed successfully. " + updateCounts.length + " rows affected.");
} catch (SQLException e) {
e.printStackTrace();
}
}
}
Spring Boot MVC examples
1. Setting up a Spring Boot Application
Question: Write a simple Spring Boot application with an MVC controller.
Answer: Step 1: Create a new Spring Boot project using Spring Initializr. Add dependencies for Spring Web.
Step 2: Create the main application class.
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SpringBootMvcExampleApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootMvcExampleApplication.class, args);
}
}
Step 3: Create a simple MVC controller.
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class HelloController {
@GetMapping("/hello")
public String hello(Model model) {
model.addAttribute("message", "Hello, Spring Boot MVC!");
return "hello";
}
}
Step 4: Create a Thymeleaf template (hello.html
) in src/main/resources/templates
.
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Hello Page</title>
</head>
<body>
<h1 th:text="${message}"></h1>
</body>
</html>
2. Handling Form Submissions
Question: Write a Spring Boot MVC application to handle form submissions.
Answer: Step 1: Create a form template (form.html
).
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Form Page</title>
</head>
<body>
<form action="#" th:action="@{/submitForm}" th:object="${user}" method="post">
<label for="name">Name:</label>
<input type="text" id="name" th:field="*{name}"/>
<br/>
<label for="email">Email:</label>
<input type="text" id="email" th:field="*{email}"/>
<br/>
<button type="submit">Submit</button>
</form>
</body>
</html>
Step 2: Create a result template (result.html
).
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Result Page</title>
</head>
<body>
<h1>Form Submitted Successfully!</h1>
<p>Name: <span th:text="${user.name}"></span></p>
<p>Email: <span th:text="${user.email}"></span></p>
</body>
</html>
Step 3: Create a User
class to hold form data.
public class User {
private String name;
private String email;
// Getters and setters
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
Step 4: Create a controller to handle form submissions.
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PostMapping;
@Controller
public class FormController {
@GetMapping("/form")
public String showForm(Model model) {
model.addAttribute("user", new User());
return "form";
}
@PostMapping("/submitForm")
public String submitForm(@ModelAttribute User user, Model model) {
model.addAttribute("user", user);
return "result";
}
}
3. REST API with Spring Boot
Question: Write a simple REST API with Spring Boot.
Answer: Step 1: Create a User
model class.
public class User {
private Long id;
private String name;
private String email;
// Constructors, getters, and setters
public User() {}
public User(Long id, String name, String email) {
this.id = id;
this.name = name;
this.email = email;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
Step 2: Create a UserController
class to handle RESTful requests.
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
@RestController
public class UserController {
private List<User> users = new ArrayList<>();
@GetMapping("/users")
public List<User> getUsers() {
return users;
}
@PostMapping("/users")
public User addUser(@RequestBody User user) {
user.setId((long) (users.size() + 1));
users.add(user);
return user;
}
@GetMapping("/users/{id}")
public User getUserById(@PathVariable Long id) {
return users.stream()
.filter(user -> user.getId().equals(id))
.findFirst()
.orElse(null);
}
}
4. Exception Handling in Spring Boot
Question: Write a Spring Boot application demonstrating exception handling with @ControllerAdvice
.
Answer: Step 1: Create a custom exception class.
public class UserNotFoundException extends RuntimeException {
public UserNotFoundException(String message) {
super(message);
}
}
Step 2: Modify the UserController
to throw the custom exception.
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
@RestController
public class UserController {
private List<User> users = new ArrayList<>();
@GetMapping("/users")
public List<User> getUsers() {
return users;
}
@PostMapping("/users")
public User addUser(@RequestBody User user) {
user.setId((long) (users.size() + 1));
users.add(user);
return user;
}
@GetMapping("/users/{id}")
public User getUserById(@PathVariable Long id) {
return users.stream()
.filter(user -> user.getId().equals(id))
.findFirst()
.orElseThrow(() -> new UserNotFoundException("User not found with id: " + id));
}
}
Step 3: Create a GlobalExceptionHandler
class with @ControllerAdvice
.
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseStatus;
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(UserNotFoundException.class)
@ResponseStatus(HttpStatus.NOT_FOUND)
public ResponseEntity<String> handleUserNotFoundException(UserNotFoundException ex) {
return new ResponseEntity<>(ex.getMessage(), HttpStatus.NOT_FOUND);
}
// Other exception handlers can be added here
}
5. Using Spring Data JPA
Question: Write a Spring Boot application using Spring Data JPA to perform CRUD operations.
Answer: Step 1: Add the Spring Data JPA dependency in pom.xml
.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
Step 2: Create the User
entity class.
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String email;
// Getters and setters
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
Step 3: Create a UserRepository
interface
import org.springframework.data.jpa.repository.JpaRepository;
public interface UserRepository extends JpaRepository<User, Long> {
}
Step 4: Create a UserService
class
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Optional;
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
public List<User> getAllUsers() {
return userRepository.findAll();
}
public User getUserById(Long id) {
return userRepository.findById(id).orElse(null);
}
public User saveUser(User user) {
return userRepository.save(user);
}
public void deleteUser(Long id) {
userRepository.deleteById(id);
}
}
Step 5: Create a UserController
class to handle HTTP requests.
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/users")
public class UserController {
@Autowired
private UserService userService;
@GetMapping
public List<User> getAllUsers() {
return userService.getAllUsers();
}
@GetMapping("/{id}")
public ResponseEntity<User> getUserById(@PathVariable Long id) {
User user = userService.getUserById(id);
if (user == null) {
return ResponseEntity.notFound().build();
}
return ResponseEntity.ok(user);
}
@PostMapping
public User createUser(@RequestBody User user) {
return userService.saveUser(user);
}
@PutMapping("/{id}")
public ResponseEntity<User> updateUser(@PathVariable Long id, @RequestBody User user) {
User existingUser = userService.getUserById(id);
if (existingUser == null) {
return ResponseEntity.notFound().build();
}
user.setId(id);
return ResponseEntity.ok(userService.saveUser(user));
}
@DeleteMapping("/{id}")
public ResponseEntity<Void> deleteUser(@PathVariable Long id) {
User existingUser = userService.getUserById(id);
if (existingUser == null) {
return ResponseEntity.notFound().build();
}
userService.deleteUser(id);
return ResponseEntity.noContent().build();
}
}