1.集合Collection中存储的如果是自定义类的对象,需要自定义类重写哪个方法?为什么?
List:
equals()方法;
Set:
(HashSet、LinkedHashSet为列):equals()、hashCode();
(TreeSet为例:)Comparable:CompareTo(Object obj);
Comparator: compare(Object o1 , Object o2)
2.ArrayList,LinkedList,Vector三者的相同点与不同点?【面试题】
相同: 都是List接口的实现类 都是用来存储数据的,都是有序,可重复的
不同:ArrayList:底层使用的是数组,线程不安全的,运行效率高
LinkedList:底层使用的是链表,
Vector:和ArrayList相似也是用数组存储的,线程安全的但是运行效率较低
List Map Set 相比较Set使用的比较少 List替代原来的数组
3. List接口的常用方法有哪些?(增、删、改、查、插、长度、遍历)
add(Object obj);
remove(int index);/remove(Object obj);
set(int index , Object obj;
get(int index);
add(int index, Object obj);
size();
使用iterator迭代器 遍历
使用foreach增强型for循环遍历
普通for循环
4.如何使用lterator和增强for循环遍历List。举例说明
//Iterator遍历
List list = new ArrayList();
list.add(123);
list.add(321);
list.add(122);
list.add(133);
Iterator iterator = list.iterator();
while(iterator.hasNext()){
System.out.println(iterator.next());
}
//增强型for循环遍历
for(Object obj : list){
System.out.println(obj);
}
5. Set存储数据的特点是什么?常见的实现类有什么?说明一下彼此的特点。
特点:无序的,不可重复的
常见的实现类:HashSet-LinkedHashSet、TreeSet;
HashSet:数组和链表的结合体;
LinkedHashSet:有序的
TreeSet:向TreeSet中添加的数据,要求是相同类的对象。