集合-复习
1. 集合Collection中存储的如果是自定义类的对象,需要自定义类重写哪个方法?为什么?
equals()方法。	contains()/remove()/retainsAll()....
List:equals()方法
Set:(HashSet、LinkedHashSet为例):equals()、hashCode()
        (TreeSet为例):Comparable:compareTo(Object obj)
	               Comparator:compare(Object o1, Object o2)


2 .ArrayList,LinkedList,Vector三者的相同点与不同点?【面试题】
相同点 三者都是List接口的实现类,List是有序可重复的,所以三者都是有序可重复的
不同点 ArrayList底层存储数据的结构是数组的形式,是主要实现类。
		在jdk7中进行实例化的时候底层会创建一个长度为10的数组,如果数组长度不够存储数据,会进行扩充,每次扩充为原来的1.5倍
		在jdk8中进行实例化的时候底层不会进行创建数据,但在进行添加操作的时候底层会创建一个长度为10的数组,扩充操作同jdk7一致
		如果在存储固定量的数据时,可以通过带参的构造器实例化需要数据长度的对象。
		ArrayList查找效率高,复杂度为o(1)(LinkedList查找复杂度为o(n)),ArrayList是线程不安全的
           LinkedList底层存储数据的结构是双向链表的形式,
		在需要进行频繁的插入和删除操作时,使用LinkedList效率要比ArrayList效率高(LinkedList删除复杂度为o(1),ArrayList删除复杂度为o(n)),LinkedList也是线程不安全的
           Vector底层存储数据的结构是数组的形式,
		在进行实例化的时候底层会创建一个长度为10的数组,每次扩充为原来的2倍,是线程安全的,作为古老实现类出现,效率低,基本上不用。

List Map	Set

3. List 接口的常用方法有哪些?(增、删、改、查、插、长度、遍历)
增:add(Object obj)
删:remove(Object obj)/remove(int index)
改:set(int index,Object obj)
查:get(int index)
插:add(int index,Object obj)
长度:size()
遍历:使用:Iterator、foreach、普通的for

4. 如何使用Iterator和增强for循环遍历List。举例说明

5. Set 存储数据的特点是什么?常见的实现类有什么?说明一下彼此的特点。
Set存储数据的特点是无序的,不可重复的
常见的实现类:HashSet	LinkedHashSet	TreeSet
	       HashMap	LinkedHashMap	TreeMap
package top.qaqaq.java.P542;

import org.junit.jupiter.api.Test;

import java.util.ArrayList;
import java.util.Iterator;

/**
 * @author RichieZhang
 * @create 2022-10-27 下午 12:48
 */
public class TraversTest {

    @Test
    public void test1(){
        ArrayList list = new ArrayList();
        list.add(123);
        list.add(456);
        list.add("你好");
        list.add(new User("Tom",22));
        list.add(129);

        Iterator iterator = list.iterator();
        while (iterator.hasNext()){
            System.out.println(iterator.next());
        }

        for (Object obj : list){
            System.out.println(obj);
        }
    }
}
package top.qaqaq.java.P542;

/**
 * @author RichieZhang
 * @create 2022-10-27 下午 1:00
 */
public class User {

    private String name;
    private int age;

    public User() {
    }

    public User(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇