面试题答案
一键面试- 实现思路:
- 可以创建一个类实现
Collection
接口,重写其添加元素的方法(如add
方法)。 - 在添加元素时,将元素添加到一个内部数据结构(如
List
)中,然后对该内部数据结构按照特定规则(如元素长度)进行排序。
- 可以创建一个类实现
- 关键代码示例:
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
public class CustomSortedCollection<T extends Comparable<T>> implements Collection<T> {
private List<T> internalList;
public CustomSortedCollection() {
internalList = new ArrayList<>();
}
@Override
public boolean add(T element) {
boolean added = internalList.add(element);
Collections.sort(internalList, Comparator.comparingInt(String::length));
return added;
}
@Override
public int size() {
return internalList.size();
}
@Override
public boolean isEmpty() {
return internalList.isEmpty();
}
@Override
public boolean contains(Object o) {
return internalList.contains(o);
}
@Override
public Iterator<T> iterator() {
return internalList.iterator();
}
@Override
public Object[] toArray() {
return internalList.toArray();
}
@Override
public <T1> T1[] toArray(T1[] a) {
return internalList.toArray(a);
}
@Override
public boolean remove(Object o) {
return internalList.remove(o);
}
@Override
public boolean containsAll(Collection<?> c) {
return internalList.containsAll(c);
}
@Override
public boolean addAll(Collection<? extends T> c) {
boolean result = internalList.addAll(c);
Collections.sort(internalList, Comparator.comparingInt(String::length));
return result;
}
@Override
public boolean removeAll(Collection<?> c) {
return internalList.removeAll(c);
}
@Override
public boolean retainAll(Collection<?> c) {
return internalList.retainAll(c);
}
@Override
public void clear() {
internalList.clear();
}
}
上述代码中,CustomSortedCollection
类实现了Collection
接口,重写了add
方法,每次添加元素后对内部List
按照元素长度进行排序。同时也实现了Collection
接口的其他必要方法,确保集合功能的完整性。