- Arraylist 和 Vector 的区别?">Arraylist 和 Vector 的区别?
- Arraylist 与 LinkedList 区别?">Arraylist 与 LinkedList 区别?
- 补充内容:RandomAccess 接口">补充内容:RandomAccess 接口
- ArrayList 的扩容机制">ArrayList 的扩容机制
- comparable 和 Comparator 的区别">comparable 和 Comparator 的区别
- 无序性和不可重复性的含义是什么">无序性和不可重复性的含义是什么
- 比较 HashSet、LinkedHashSet 和 TreeSet 三者的异同">比较 HashSet、LinkedHashSet 和 TreeSet 三者的异同
- Queue 与 Deque 的区别">Queue 与 Deque 的区别
- ArrayDeque 与 LinkedList 的区别">ArrayDeque 与 LinkedList 的区别
- 说一说 PriorityQueue">说一说 PriorityQueue
- HashMap 和 Hashtable 的区别">HashMap 和 Hashtable 的区别
- HashMap 和 HashSet 区别">HashMap 和 HashSet 区别
- HashMap 和 TreeMap 区别">HashMap 和 TreeMap 区别
- HashSet 如何检查重复">HashSet 如何检查重复
- HashMap 的底层实现">HashMap 的底层实现
- HashMap 的长度为什么是 2 的幂次方">HashMap 的长度为什么是 2 的幂次方
- HashMap 多线程操作导致死循环问题">HashMap 多线程操作导致死循环问题
- HashMap 有哪几种常见的遍历方式?">HashMap 有哪几种常见的遍历方式?
- ConcurrentHashMap 和 Hashtable 的区别">ConcurrentHashMap 和 Hashtable 的区别
- ConcurrentHashMap 线程安全的具体实现方式/底层具体实现">ConcurrentHashMap 线程安全的具体实现方式/底层具体实现
">
Arraylist 和 Vector 的区别?
Arraylist 与 LinkedList 区别?
补充内容:RandomAccess 接口
标志了实现RandomAcess这个接口的类具有随机访问功能
随机访问功能:可以直接访问众多数据中任意想要的那一个,例如:在1-10中,直接去查找任何一个数字的时间都是相同的
ArrayList 的扩容机制
comparable 和 Comparator 的区别
comparable需要在类中重写compareTo方法
comparator在创建对象时通过匿名内部类的方式进行重写compare方法排序
comparator 定制排序
package com.study_01;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
public class ComparatorArray {
public static void main(String[] args) {
ArrayList<Integer> arrayList = new ArrayList<Integer>();
arrayList.add(-1);
arrayList.add(3);
arrayList.add(3);
arrayList.add(-5);
arrayList.add(7);
arrayList.add(4);
arrayList.add(-9);
arrayList.add(-7);
System.out.println("原始数组:");
System.out.println(arrayList);
// void reverse(List list) 反转
// Collections 针对集合的工具类
Collections.reverse(arrayList);
System.out.println("Collections.reverse(arrayList:)");
System.out.println(arrayList);
// void sort(List list) 按自然排序的升序排序
Collections.sort(arrayList);
System.out.println("Collections.sort(arrayList):");
System.out.println(arrayList);
// 定制的用法,降序
Collections.sort(arrayList, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
// this , s
return o2.compareTo(o1);
}
});
System.out.println("定制排序后:");
System.out.println(arrayList);
}
}
原始数组:
[-1, 3, 3, -5, 7, 4, -9, -7]
Collections.reverse(arrayList:)
[-7, -9, 4, 7, -5, 3, 3, -1]
Collections.sort(arrayList):
[-9, -7, -5, -1, 3, 3, 4, 7]
定制排序后:
[7, 4, 3, 3, -1, -5, -7, -9]
无序性和不可重复性的含义是什么
1、什么是无序性?无序性不等于随机性 ,无序性是指存储的数据在底层数组中并非按照数组索引的顺序添加 ,而是根据数据的哈希值决定的。
2、什么是不可重复性?不可重复性是指添加的元素按照 equals()判断时 ,返回 false,需要同时重写 equals()方法和 HashCode()方法。
比较 HashSet、LinkedHashSet 和 TreeSet 三者的异同
HashSet 是 Set 接口的主要实现类 ,HashSet 的底层是 HashMap,线程不安全的,可以存储 null 值;
LinkedHashSet 是 HashSet 的子类,能够按照添加的顺序遍历;
TreeSet 底层使用红黑树,能够按照添加元素的顺序进行遍历,排序的方式有自然排序和定制排序。