Creating custom collection classes in Java involves defining classes that implement the core collection interfaces (List, Set, Map, etc.) or extending existing collection classes to add custom behavior or constraints. Let’s create custom implementations for a List and a Set that store student names, focusing on simplicity and basic functionality.
Here’s a simple custom implementation of a list (CustomStudentList) that stores student names:
import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.ListIterator; import java.util.Set; class CustomStudentList implements List<String> { private final List<String> students; public CustomStudentList() { this.students = new ArrayList<>(); } @Override public int size() { return students.size(); } @Override public boolean isEmpty() { return students.isEmpty(); } @Override public boolean contains(Object o) { return students.contains(o); } @Override public Iterator<String> iterator() { return students.iterator(); } @Override public Object[] toArray() { return students.toArray(); } @Override public <T> T[] toArray(T[] ts) { return students.toArray(ts); } @Override public boolean add(String s) { return students.add(s); } @Override public boolean remove(Object o) { return students.remove(o); } @Override public boolean containsAll(Collection<?> collection) { return students.containsAll(collection); } @Override public boolean addAll(Collection<? extends String> collection) { return students.addAll(collection); } @Override public boolean addAll(int i, Collection<? extends String> collection) { return students.addAll(i, collection); } @Override public boolean removeAll(Collection<?> collection) { return students.removeAll(collection); } @Override public boolean retainAll(Collection<?> collection) { return students.retainAll(collection); } @Override public void clear() { students.clear(); } @Override public String get(int i) { return students.get(i); } @Override public String set(int i, String s) { return students.set(i, s); } @Override public void add(int i, String s) { students.add(i, s); } @Override public String remove(int i) { return students.remove(i); } @Override public int indexOf(Object o) { return students.indexOf(o); } @Override public int lastIndexOf(Object o) { return students.lastIndexOf(o); } @Override public ListIterator<String> listIterator() { return students.listIterator(); } @Override public ListIterator<String> listIterator(int index) { return students.listIterator(index); } @Override public List<String> subList(int i, int i1) { return students.subList(i, i1); } } class CustomStudentSet implements Set<String> { private final Set<String> students; public CustomStudentSet() { this.students = new HashSet<>(); } @Override public int size() { return students.size(); } @Override public boolean isEmpty() { return students.isEmpty(); } @Override public boolean contains(Object o) { return students.contains(o); } @Override public Iterator<String> iterator() { return students.iterator(); } @Override public Object[] toArray() { return students.toArray(); } @Override public <T> T[] toArray(T[] ts) { return students.toArray(ts); } @Override public boolean add(String s) { return students.add(s); } @Override public boolean remove(Object o) { return students.remove(o); } @Override public boolean containsAll(Collection<?> collection) { return students.containsAll(collection); } @Override public boolean addAll(Collection<? extends String> collection) { return students.addAll(collection); } @Override public boolean retainAll(Collection<?> collection) { return students.retainAll(collection); } @Override public boolean removeAll(Collection<?> collection) { return students.removeAll(collection); } @Override public void clear() { students.clear(); } } public class CustomCollectionExample { public static void main(String[] args) { // Using CustomStudentList List<String> studentList = new CustomStudentList(); studentList.add("Paani"); studentList.add("Mahesh"); studentList.add("Datta"); System.out.println("Student List:"); for (String student : studentList) { System.out.println(student); } // Using CustomStudentSet Set<String> studentSet = new CustomStudentSet(); studentSet.add("Ganesh"); studentSet.add("Harsha"); studentSet.add("Paani"); // Duplicate will not be added System.out.println("\nStudent Set:"); for (String student : studentSet) { System.out.println(student); } } } /* D:\javaplanet\Collection Framework>javac CustomCollectionExample.java D:\javaplanet\Collection Framework>java CustomCollectionExample Student List: Paani Mahesh Datta Student Set: Ganesh Harsha Paani */