java011学习记录

本文详细介绍了Java中的几种重要集合框架,包括ArrayList、LinkedList、HashSet、LinkedHashSet、TreeSet以及Map(HashMap和TreeMap)的使用、特点和操作方法,对比了它们在存储、查询和排序方面的异同。
摘要由CSDN通过智能技术生成

集合框架

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

public class Test {
    public static void main(String[] args) {
        ArrayList list = new ArrayList();
        list.add("Hello");
        list.add("World");
        list.add("JavaSE");
        list.add("JavaME");
        list.add("JavaEE");
//        list.add(list);
        System.out.println(list.toString());
        System.out.println(list.size());
        System.out.println(list.contains("Java"));
        Iterator iterator = list.iterator();
        while (iterator.hasNext()) {
            System.out.println(iterator.next() + ",");
        }
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }
        list.remove("Hello");
        System.out.println(list);
        list.remove(0);
        System.out.println(list);
        list.add("abc");
        System.out.println(list);
        list.add(1, "123");
        System.out.println(list);
        list.set(1, "666");
        System.out.println(list);
        System.out.println(list.indexOf("JavaEE2"));
        List list1 = list.subList(1, 3);
        System.out.println(list1);
    }
}

LinkedList 和 ArrayList 的区别:

ArrayList 底层采用的是数组的形式来存储数据,LinkedList 底层采用的是链表的形式来存储数据

数组和链表的区别?

数组内存是连续的空间,查询速度快,增删速度慢

链表内存是不连续的空间,查询速度慢,增删速度快

Set 接口

Set 是 Collection 的子接口,Set 接口以散列的形式存储数据,元素没有顺序,可以存储一组无序且唯一的对象。

List 是有序但是不唯一

Set 是无序且唯一

import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;

public class Test {
    public static void main(String[] args) {
        HashSet hashSet = new HashSet();
        hashSet.add("Hello");
        hashSet.add("Wolrd");
        hashSet.add("Hello");
        hashSet.add("Wolrd");
        hashSet.add("Hello");
        hashSet.add("Wolrd");
        hashSet.add("JavaSE");
        hashSet.add("JavaME");
        hashSet.add("JavaEE");
        System.out.println(hashSet.toString());
        System.out.println(hashSet.size());
        Iterator iterator = hashSet.iterator();
        while (iterator.hasNext()) {
            System.out.println(iterator.next());
        }
        hashSet.remove("World");
        System.out.println(hashSet);
    }
}

LinkedHashSet 是 Set 的另外一个子接口,可以存储一组有序且唯一的元素,有序和 List 的有序不是一个意思

List 的有序是元素有下标,内部的数据有排序的

LinkedHashSet 的有序是元素在集合内部会自动根据大小进行排序

import java.util.*;

public class Test {
    public static void main(String[] args) {
        LinkedHashSet set = new LinkedHashSet();
        set.add(new User(1));
        set.add(new User(6));
        set.add(new User(2));
        set.add(new User(5));
        set.add(new User(3));
        set.add(new User(4));
        set.add(new User(1));
        System.out.println(set);
//        System.out.println(new User(1).equals(new User(1)));
    }
}
import java.util.Objects;

public class User {
    private Integer id;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public User(Integer id) {
        this.id = id;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                '}';
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        User user = (User) o;
        return Objects.equals(id, user.id);
    }

    @Override
    public int hashCode() {
        return Objects.hash(id);
    }
}

TreeSet 有序唯一,集合会自动给元素进行排序

import java.util.Objects;

public class User implements Comparable {
    private Integer id;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public User(Integer id) {
        this.id = id;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                '}';
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        User user = (User) o;
        return Objects.equals(id, user.id);
    }

    @Override
    public int hashCode() {
        return Objects.hash(id);
    }

    @Override
    public int compareTo(Object o) {
        User user = (User) o;
        if (this.id < user.id) {
            return 1;
        } else {
            if(this.id == user.id) {
                return 0;
            } else {
                return -1;
            }
        }
    }
}
import java.util.*;

public class Test {
    public static void main(String[] args) {
        TreeSet set1 = new TreeSet();
        set1.add(new User(1));
        set1.add(new User(6));
        set1.add(new User(2));
        set1.add(new User(5));
        set1.add(new User(3));
        set1.add(new User(4));
        System.out.println(set1);
    }
}

Map

Set 和 List 只能存储单个数据,Map 存储成对出现的数据,key-value 的键值映射形式存储

方法描述
int size()获取集合长度
boolean isEmpty()判断集合是否为空
boolean containsKey(Object key)判断集合中是否存在 key
boolean containsValue(Object value)判断集合中是否存在某个 value
V get(Object key)取出集合中 key 对应的 value
V put(K key,V value)向集合中存入一组 key-value 的元素
V remove(Object key)删除集合中 key 对应的 value
void clear()清空集合中的所有元素
Set keySet()取出集合中所有的 key,返回一个 Set 集合
Collection values()取出集合中所有的 value,返回一个 Collection 集合
Set<Map,Entry<K,V>> entrySet()将 Map 转换为 Set 对象
import java.util.*;

public class Test {
    public static void main(String[] args) {
        Map<String,String> hashMap = new HashMap<>();
        hashMap.put("h", "Hello");
        hashMap.put("w", "World");
        hashMap.put("j", "Java");
        hashMap.put("s","JavaSE");
        hashMap.put("m", "JavaME");
        hashMap.put("e", "JavaEE");
        System.out.println(hashMap);
        hashMap.remove("e");
        System.out.println(hashMap);
        System.out.println(hashMap.containsKey("a"));
        System.out.println(hashMap.containsValue("Java"));
        Set<String> strings = hashMap.keySet();
        Iterator<String> iterator = strings.iterator();
        while (iterator.hasNext()) {
            System.out.println(iterator.next());
        }
        Collection<String> values = hashMap.values();
        Iterator<String> iterator1 = values.iterator();
        while (iterator1.hasNext()) {
            System.out.println(iterator1.next());
        }
        Set<Map.Entry<String, String>> entries = hashMap.entrySet();
        Iterator<Map.Entry<String, String>> iterator2 = entries.iterator();
        while (iterator2.hasNext()) {
            Map.Entry<String, String> next = iterator2.next();
            System.out.println(next.getKey());
            System.out.println(next.getValue());
        }
    }
}

TreeMap 按照 key 值对集合中的元素进行排序

import java.util.*;

public class Test {
    public static void main(String[] args) {
        Map<User,String> hashMap = new TreeMap<>();
        hashMap.put(new User(3), "Hello");
        hashMap.put(new User(1), "World");
        hashMap.put(new User(2), "Java");
        hashMap.put(new User(5),"JavaSE");
        hashMap.put(new User(6), "JavaME");
        hashMap.put(new User(4), "JavaEE");
        System.out.println(hashMap);
    }
}
import java.util.Objects;

public class User implements Comparable {
    private Integer id;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public User(Integer id) {
        this.id = id;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                '}';
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        User user = (User) o;
        return Objects.equals(id, user.id);
    }

    @Override
    public int hashCode() {
        return Objects.hash(id);
    }

    @Override
    public int compareTo(Object o) {
        User user = (User) o;
        if (this.id > user.id) {
            return 1;
        } else {
            if(this.id == user.id) {
                return 0;
            } else {
                return -1;
            }
        }
    }
}

Collections 工具类

方法描述
sort对集合进行排序
binarySearch查找元素在集合中的下标
reverse对集合中的元素进行反序输出
swap交换集合中两个元素的位置
fill将集合中所有元素进行替换
min找出集合中的最小值
max找出集合中的最大值
replaceAll将集合中所有的值进行替换
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值