# Animal.java
public class Animal implements Comparable<Animal> {
private String name;
public Animal() {
}
public Animal(String name) {
this.name = name;
}
public String getName() {
return name;
}
@Override
public String toString() {
return String.format("%s\n", this.name);
}
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (!(obj instanceof Animal)) {
return false;
}
return (this.getName().equals(((Animal) obj).getName()));
}
@Override
public int compareTo(Animal o) {
if (o == null)
return 1;
// Strings are comparable.
int cmpValue = this.getName().compareTo(o.getName());
if (cmpValue < 0)
return 1;
if (cmpValue > 0)
return -1;
return 0;
}
}
# BestDataContainer.java
import java.util.NoSuchElementException;
public class BestDataContainer<T extends Comparable<? super T>> {
private Object[] data;
public int countItems;
public BestDataContainer() {
this(10);
}
public BestDataContainer(int capacity) {
data = new Object[capacity];
countItems = 0;
}
public int size() {
return countItems;
}
public boolean add(T item) {
if (item == null) {
return false;
}
if (countItems == data.length) {
return false;
}
int itemIndex = findItem(item);
if (itemIndex > 0) {
return false;
}
data[countItems++] = item;
return true;
}
public boolean remove(int index) {
validateIndex(index);
int i = index;
int j = i + 1;
while (j < countItems) {
data[j - 1] = data[j];
j++;
}
countItems--;
return true;
}
public boolean remove(T item) {
if (item == null) {
return false;
}
int index = findItem(item);
if (index < 0) {
return false;
}
return remove(index);
}
public int findItem(T item) {
for (int i = 0; i < countItems; i++) {
if (data[i].equals(item)) {
return i;
}
}
return -1;
}
public T get(int index) {
validateIndex(index);
return (T) data[index];
}
private void validateIndex(int index) {
if (index < 0 || index >= countItems) {
throw new NoSuchElementException("Invalid Index");
}
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < countItems; i++) {
sb.append("Next Item: " + data[i] + "\n");
}
return sb.toString();
}
public T getMax() {
if (countItems > 0) {
T max = (T) data[0];
for (int i = 1; i < countItems; i++) {
max = BestDataContainer.getMax(max, (T) data[i]);
}
return max;
} else if (countItems == 0) {
return (T) data[0];
}
return null;
}
public T getMin() {
if (countItems > 0) {
T min = (T) data[0];
for (int i = 1; i < countItems; i++) {
min = BestDataContainer.getMin(min, (T) data[i]);
}
return min;
} else if (countItems == 0) {
return (T) data[0];
}
return null;
}
public static <T extends Comparable<? super T>> T getMax(T o1, T o2) {
return (o1.compareTo(o2)) == 1 ? o1 : o2;
}
public static <T extends Comparable<? super T>> T getMin(T o1, T o2) {
return (o1.compareTo(o2)) == 1 ? o2 : o1;
}
}
# Zoo.java
public class Zoo {
public static void main(String[] args) {
BestDataContainer<Animal> bdc = new BestDataContainer<>();
bdc.add(new Animal("Chipmunk"));
bdc.add(new Animal("Hedgehog"));
bdc.add(new Animal("Dog"));
bdc.add(new Animal("Frog"));
bdc.add(new Animal("Eagele"));
System.out.println(bdc);
System.out.println("====================");
System.out.println("Max: " + bdc.getMax());
System.out.println("Min: " + bdc.getMin());
}
}
# 결과
Next: Item: Chipmunk
Next: Item: Hedgehog
Next: Item: Dog
Next: Item: Frog
Next: Item: Eagele
====================
Max: Chipmunk
Min: Hedgehog
댓글 영역