11.27知识点
1、Collections集合工具类
// 集合工具类,用来操作集合,提供了大量操作集合的方法
1.1 public static boolean addAll(Collection<? super T> c, T… elements)
// 往集合中添加一些元素
代码示例:

ArrayList<Integer> list = new ArrayList<>();
Collections.addAll(list, 1,2,3,4,5,6);

1.2 public static void shuffle(List<?> list)
// 打乱集合顺序
代码示例:

Collections.shuffle(list);

1.3 public static void sort(List list)
// 将集合中的元素按照默认规则进行排序, 默认升序
注:
1、只可以传List集合,不可以传Set集合
2、被排序的集合里边存储的元素,必须实现Comparable, 重写接口中的方法comparableTo定义排序的规则
** 重写comparableTo
// return 0;认为元素都是相同的
// 自定义比较的规则,比较两个人的年龄(this, 参数Person(自定义类))
代码示例:

    public class Person implements Comparable<Person> {
        @Override
        public int compareTo(Person o) {
            // 自己(this)- 参数 就是升序
            // return 0;
            // return this.getAge() - o.getAge(); // 年龄升序排列
            return o.getAge() - this.getAge(); // 年龄倒序排列
        }
    }

1.4 public static void sort(List list, Comparator<? super T> c)
// 将集合中的元素按照指定规则进行排序
// Comparable和Comparator的区别
Comparable需要自己在需要排序的类中实现该接口,并制定排序规则
Comparable:自己(this)和别人(参数)比较,自己需要实现Comparable接口,重写比较的规则comparableTo方法
Comparator:相当于找一个第三方的裁判比较
代码示例:

        ArrayList<Person> list = new ArrayList<>();
        Collections.addAll(list, new Person("b迪丽热巴", 18, "女"), new Person("a迪丽热巴", 18, "男"), new Person("古力娜扎", 17, "女"));
        Collections.sort(list, new Comparator<Person>() {
            @Override
            public int compare(Person o1, Person o2) {
                // return 0;
                // return o1.getAge() -o2.getAge(); // o1 -o2 升序
                // return o2.getAge() -o1.getAge(); // // o2 -o1 降序
                // 如果年龄相同,再用名字的第一个字符比较
                int result = o1.getAge() -o2.getAge();
                if (result == 0) {
                    result = o1.getName().charAt(0) -o2.getName().charAt(0);
                }
                return result;
            }
        });
        System.out.println(list);

2、Map集合
特点:

  1. Map集合是一个双列集合,一个元素包含两个值(key, value)
  2. Map集合中的元素,key和value的数据类型可以相同,也可以不同
  3. Map集合中的元素,key是不允许重复的(所以要保证存储的key必须重写hashCode和equals方法,保证唯一),value可以重复
  4. Map集合中的元素,key和value是一一对应的
    2.1 java.util.HashMap<k, v>集合 implements Map<k, v>接口
    // 底层是哈希表,查询速度非常快
    // 是一个无序的集合
    2.2 HashMap集合
    java.util.LinkedHashMap<k, v>集合 implements HashMap<k, v>接口
    // 底层是哈希表 + 链表
    // 是一个有序的集合
    2.3 Map方法合集
    2.3.1 V put(K key, V value)
    // 把指定的键与指定的值添加到Map集合中
    // 存储键值对的时候,key不重复,返回值V是null,key重复,会使用新的value替换Map中重复的value,返回值是被替换之前的value值
    2.3.2 V remove(Object key)
    // 把指定的键所对应的键值对元素在Map集合中删除,返回被删除的元素
    // key存在,返回被删除的值,key不存在,返回null
    2.3.3 V get(Object key);
    // 根据指定的键,在Map集合中获取对应的值
    // key存在返回对应的value值,key不存在,返回null
    2.3.4 boolean containsKey(Object key);
    // 判断集合汇总是否包含 指定的键
    2.3.5 Set keySet();
    // 获取Map集合中所有的键,存储到Set集合中
    // 用来遍历Map
    2.3.6 Set<Map.Entry<K, V>> entrySet();
    // 获取到Map集合中所有的键值对对象的集合(Set集合)
    // Set集合的每一个元素就是一个entry对象,可以用entry对象的getKey()和getValue()获取key和value
    2.4 LinkedHashMap集合
    // LinkedHashMap<k, v> extends HashMap<k, v>
    // 底层实现:哈希表 + 链表(记录元素顺序)
    // 有序集合
    2.5 Hashtable<K,V>集合
    java.util.Hashtable<K,V>
    // 与HashMap功能相同,区别:1、Hashtable不能存null值2、线程安全的,单线程

版权声明:本文为weixin_44079370原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_44079370/article/details/121581680