import{_ as e}from"./plugin-vue_export-helper.21dcd24c.js";import{r as o,o as c,c as l,a as n,b as t,d as s,e as p}from"./app.85cbe1c4.js";const i={},u=n("p",null,"Collections \u662F JDK \u63D0\u4F9B\u7684\u4E00\u4E2A\u5DE5\u5177\u7C7B\uFF0C\u4F4D\u4E8E java.util \u5305\u4E0B\uFF0C\u63D0\u4F9B\u4E86\u4E00\u7CFB\u5217\u7684\u9759\u6001\u65B9\u6CD5\uFF0C\u65B9\u4FBF\u6211\u4EEC\u5BF9\u96C6\u5408\u8FDB\u884C\u5404\u79CD\u9A9A\u64CD\u4F5C\uFF0C\u7B97\u662F\u96C6\u5408\u6846\u67B6\u7684\u4E00\u4E2A\u5927\u7BA1\u5BB6\u3002",-1),k=s("\u8FD8\u8BB0\u5F97\u6211\u4EEC\u524D\u9762\u8BB2\u8FC7\u7684 "),d={href:"https://mp.weixin.qq.com/s/9dYmKXEErZbyPJ_GxwWYug",target:"_blank",rel:"noopener noreferrer"},r=s("Arrays \u5DE5\u5177\u7C7B"),m=s("\u5417\uFF1F\u53EF\u4EE5\u56DE\u53BB\u6E29\u4E60\u4E0B\u3002"),v=p(`

Collections \u7684\u7528\u6CD5\u5F88\u7B80\u5355\uFF0C\u5728 Intellij IDEA \u4E2D\u6572\u5B8C Collections. \u4E4B\u540E\u5C31\u53EF\u4EE5\u770B\u5230\u5B83\u63D0\u4F9B\u7684\u65B9\u6CD5\u4E86\uFF0C\u5927\u81F4\u770B\u4E00\u4E0B\u65B9\u6CD5\u540D\u548C\u53C2\u6570\u5C31\u80FD\u77E5\u9053\u8FD9\u4E2A\u65B9\u6CD5\u662F\u5E72\u561B\u7684\u3002

\u4E3A\u4E86\u8282\u7701\u5927\u5BB6\u7684\u5B66\u4E60\u65F6\u95F4\uFF0C\u6211\u5C06\u8FD9\u4E9B\u65B9\u6CD5\u505A\u4E86\u4E00\u4E9B\u5206\u7C7B\uFF0C\u5E76\u5217\u4E3E\u4E86\u4E00\u4E9B\u7B80\u5355\u7684\u4F8B\u5B50\u3002

01\u3001\u6392\u5E8F\u64CD\u4F5C

\u6765\u770B\u4F8B\u5B50\uFF1A

List<String> list = new ArrayList<>();
list.add("\u6C89\u9ED8\u738B\u4E8C");
list.add("\u6C89\u9ED8\u738B\u4E09");
list.add("\u6C89\u9ED8\u738B\u56DB");
list.add("\u6C89\u9ED8\u738B\u4E94");
list.add("\u6C89\u9ED8\u738B\u516D");

System.out.println("\u539F\u59CB\u987A\u5E8F\uFF1A" + list);

// \u53CD\u8F6C
Collections.reverse(list);
System.out.println("\u53CD\u8F6C\u540E\uFF1A" + list);

// \u6D17\u724C
Collections.shuffle(list);
System.out.println("\u6D17\u724C\u540E\uFF1A" + list);

// \u81EA\u7136\u5347\u5E8F
Collections.sort(list);
System.out.println("\u81EA\u7136\u5347\u5E8F\u540E\uFF1A" + list);

// \u4EA4\u6362
Collections.swap(list, 2,4);
System.out.println("\u4EA4\u6362\u540E\uFF1A" + list);

\u8F93\u51FA\u540E\uFF1A

\u539F\u59CB\u987A\u5E8F\uFF1A[\u6C89\u9ED8\u738B\u4E8C, \u6C89\u9ED8\u738B\u4E09, \u6C89\u9ED8\u738B\u56DB, \u6C89\u9ED8\u738B\u4E94, \u6C89\u9ED8\u738B\u516D]
\u53CD\u8F6C\u540E\uFF1A[\u6C89\u9ED8\u738B\u516D, \u6C89\u9ED8\u738B\u4E94, \u6C89\u9ED8\u738B\u56DB, \u6C89\u9ED8\u738B\u4E09, \u6C89\u9ED8\u738B\u4E8C]
\u6D17\u724C\u540E\uFF1A[\u6C89\u9ED8\u738B\u4E94, \u6C89\u9ED8\u738B\u4E8C, \u6C89\u9ED8\u738B\u516D, \u6C89\u9ED8\u738B\u4E09, \u6C89\u9ED8\u738B\u56DB]
\u81EA\u7136\u5347\u5E8F\u540E\uFF1A[\u6C89\u9ED8\u738B\u4E09, \u6C89\u9ED8\u738B\u4E8C, \u6C89\u9ED8\u738B\u4E94, \u6C89\u9ED8\u738B\u516D, \u6C89\u9ED8\u738B\u56DB]
\u4EA4\u6362\u540E\uFF1A[\u6C89\u9ED8\u738B\u4E09, \u6C89\u9ED8\u738B\u4E8C, \u6C89\u9ED8\u738B\u56DB, \u6C89\u9ED8\u738B\u516D, \u6C89\u9ED8\u738B\u4E94]

02\u3001\u67E5\u627E\u64CD\u4F5C

\u6765\u770B\u4F8B\u5B50\uFF1A

System.out.println("\u6700\u5927\u5143\u7D20\uFF1A" + Collections.max(list));
System.out.println("\u6700\u5C0F\u5143\u7D20\uFF1A" + Collections.min(list));
System.out.println("\u51FA\u73B0\u7684\u6B21\u6570\uFF1A" + Collections.frequency(list, "\u6C89\u9ED8\u738B\u4E8C"));

// \u6CA1\u6709\u6392\u5E8F\u76F4\u63A5\u8C03\u7528\u4E8C\u5206\u67E5\u627E\uFF0C\u7ED3\u679C\u662F\u4E0D\u786E\u5B9A\u7684
System.out.println("\u6392\u5E8F\u524D\u7684\u4E8C\u5206\u67E5\u627E\u7ED3\u679C\uFF1A" + Collections.binarySearch(list, "\u6C89\u9ED8\u738B\u4E8C"));
Collections.sort(list);
// \u6392\u5E8F\u540E\uFF0C\u67E5\u627E\u7ED3\u679C\u548C\u9884\u671F\u4E00\u81F4
System.out.println("\u6392\u5E8F\u540E\u7684\u4E8C\u5206\u67E5\u627E\u7ED3\u679C\uFF1A" + Collections.binarySearch(list, "\u6C89\u9ED8\u738B\u4E8C"));

Collections.fill(list, "\u6C89\u9ED8\u738B\u516B");
System.out.println("\u586B\u5145\u540E\u7684\u7ED3\u679C\uFF1A" + list);

\u8F93\u51FA\u540E\uFF1A

\u539F\u59CB\u987A\u5E8F\uFF1A[\u6C89\u9ED8\u738B\u4E8C, \u6C89\u9ED8\u738B\u4E09, \u6C89\u9ED8\u738B\u56DB, \u6C89\u9ED8\u738B\u4E94, \u6C89\u9ED8\u738B\u516D]
\u6700\u5927\u5143\u7D20\uFF1A\u6C89\u9ED8\u738B\u56DB
\u6700\u5C0F\u5143\u7D20\uFF1A\u6C89\u9ED8\u738B\u4E09
\u51FA\u73B0\u7684\u6B21\u6570\uFF1A1
\u6392\u5E8F\u524D\u7684\u4E8C\u5206\u67E5\u627E\u7ED3\u679C\uFF1A0
\u6392\u5E8F\u540E\u7684\u4E8C\u5206\u67E5\u627E\u7ED3\u679C\uFF1A1
\u586B\u5145\u540E\u7684\u7ED3\u679C\uFF1A[\u6C89\u9ED8\u738B\u516B, \u6C89\u9ED8\u738B\u516B, \u6C89\u9ED8\u738B\u516B, \u6C89\u9ED8\u738B\u516B, \u6C89\u9ED8\u738B\u516B]

03\u3001\u540C\u6B65\u63A7\u5236

`,16),b={href:"https://mp.weixin.qq.com/s/qk_neCdzM3aB6pVWVTHhNw",target:"_blank",rel:"noopener noreferrer"},g=s("HashMap \u662F\u7EBF\u7A0B\u4E0D\u5B89\u5168"),y=s("\u7684\uFF0C\u8FD9\u4E2A\u6211\u4EEC\u524D\u9762\u8BB2\u5230\u4E86\u3002\u90A3\u5176\u5B9E ArrayList \u4E5F\u662F\u7EBF\u7A0B\u4E0D\u5B89\u5168\u7684\uFF0C\u6CA1\u6CD5\u5728\u591A\u7EBF\u7A0B\u73AF\u5883\u4E0B\u4F7F\u7528\uFF0C\u90A3 Collections \u5DE5\u5177\u7C7B\u4E2D\u63D0\u4F9B\u4E86\u591A\u4E2A synchronizedXxx \u65B9\u6CD5\uFF0C\u8FD9\u4E9B\u65B9\u6CD5\u4F1A\u8FD4\u56DE\u4E00\u4E2A\u540C\u6B65\u7684\u5BF9\u8C61\uFF0C\u4ECE\u800C\u89E3\u51B3\u591A\u7EBF\u7A0B\u4E2D\u8BBF\u95EE\u96C6\u5408\u65F6\u7684\u5B89\u5168\u95EE\u9898\u3002"),h=p(`

\u4F7F\u7528\u8D77\u6765\u4E5F\u975E\u5E38\u7684\u7B80\u5355\uFF1A

SynchronizedList synchronizedList = Collections.synchronizedList(list);

\u770B\u4E00\u773C SynchronizedList \u7684\u6E90\u7801\u5C31\u660E\u767D\u4E86\uFF0C\u4E0D\u8FC7\u662F\u5728\u65B9\u6CD5\u91CC\u9762\u4F7F\u7528 synchronized \u5173\u952E\u5B57\u52A0\u4E86\u4E00\u5C42\u9501\u800C\u5DF2\u3002

static class SynchronizedList<E>
    extends SynchronizedCollection<E>
    implements List<E> {
    private static final long serialVersionUID = -7754090372962971524L;

    final List<E> list;

    SynchronizedList(List<E> list) {
        super(list);
        this.list = list;
    }

    public E get(int index) {
        synchronized (mutex) {return list.get(index);}
    }
    
    public void add(int index, E element) {
        synchronized (mutex) {list.add(index, element);}
    }
    public E remove(int index) {
        synchronized (mutex) {return list.remove(index);}
    }
}

\u90A3\u8FD9\u6837\u7684\u8BDD\uFF0C\u5176\u5B9E\u6548\u7387\u548C\u90A3\u4E9B\u76F4\u63A5\u5728\u65B9\u6CD5\u4E0A\u52A0 synchronized \u5173\u952E\u5B57\u7684 Vector\u3001Hashtable \u5DEE\u4E0D\u591A\uFF08JDK 1.0 \u65F6\u671F\u5C31\u6709\u4E86\uFF09\uFF0C\u800C\u8FD9\u4E9B\u96C6\u5408\u7C7B\u57FA\u672C\u4E0A\u5DF2\u7ECF\u5E9F\u5F03\u4E86\uFF0C\u51E0\u4E4E\u4E0D\u600E\u4E48\u7528\u3002

public class Vector<E>
    extends AbstractList<E>
    implements List<E>, RandomAccess, Cloneable, java.io.Serializable
{

    public synchronized E get(int index) {
        if (index >= elementCount)
            throw new ArrayIndexOutOfBoundsException(index);

        return elementData(index);
    }

    public synchronized E remove(int index) {
        modCount++;
        if (index >= elementCount)
            throw new ArrayIndexOutOfBoundsException(index);
        E oldValue = elementData(index);

        int numMoved = elementCount - index - 1;
        if (numMoved > 0)
            System.arraycopy(elementData, index+1, elementData, index,
                             numMoved);
        elementData[--elementCount] = null; // Let gc do its work

        return oldValue;
    }
}

\u6B63\u786E\u7684\u505A\u6CD5\u662F\u4F7F\u7528\u5E76\u53D1\u5305\u4E0B\u7684 CopyOnWriteArrayList\u3001ConcurrentHashMap\u3002\u8FD9\u4E9B\u6211\u4EEC\u653E\u5230\u5E76\u53D1\u7F16\u7A0B\u65F6\u518D\u8BB2\u3002

04\u3001\u4E0D\u53EF\u53D8\u96C6\u5408

\u4E3E\u4E2A\u4F8B\u5B50\uFF1A

List emptyList = Collections.emptyList();
emptyList.add("\u975E\u7A7A");
System.out.println(emptyList);

\u8FD9\u6BB5\u4EE3\u7801\u5728\u6267\u884C\u7684\u65F6\u5019\u5C31\u629B\u51FA\u9519\u8BEF\u4E86\u3002

Exception in thread "main" java.lang.UnsupportedOperationException
	at java.util.AbstractList.add(AbstractList.java:148)
	at java.util.AbstractList.add(AbstractList.java:108)
	at com.itwanger.s64.Demo.main(Demo.java:61)

\u8FD9\u662F\u56E0\u4E3A Collections.emptyList() \u4F1A\u8FD4\u56DE\u4E00\u4E2A Collections \u7684\u5185\u90E8\u7C7B EmptyList\uFF0C\u800C EmptyList \u5E76\u6CA1\u6709\u91CD\u5199\u7236\u7C7B AbstractList \u7684 add(int index, E element) \u65B9\u6CD5\uFF0C\u6240\u4EE5\u6267\u884C\u7684\u65F6\u5019\u5C31\u629B\u51FA\u4E86\u4E0D\u652F\u6301\u8BE5\u64CD\u4F5C\u7684 UnsupportedOperationException \u4E86\u3002

\u8FD9\u662F\u4ECE\u5206\u6790 add \u65B9\u6CD5\u6E90\u7801\u5F97\u51FA\u7684\u539F\u56E0\u3002\u9664\u6B64\u4E4B\u5916\uFF0CemptyList \u65B9\u6CD5\u662F final \u7684\uFF0C\u8FD4\u56DE\u7684 EMPTY_LIST \u4E5F\u662F final \u7684\uFF0C\u79CD\u79CD\u8FF9\u8C61\u8868\u660E emptyList \u8FD4\u56DE\u7684\u5C31\u662F\u4E0D\u53EF\u53D8\u5BF9\u8C61\uFF0C\u6CA1\u6CD5\u8FDB\u884C\u589E\u4F24\u6539\u67E5\u3002

public static final <T> List<T> emptyList() {
    return (List<T>) EMPTY_LIST;
}

public static final List EMPTY_LIST = new EmptyList<>();

05\u3001\u5176\u4ED6

\u8FD8\u6709\u4E24\u4E2A\u65B9\u6CD5\u6BD4\u8F83\u5E38\u7528\uFF1A

\u4E3E\u4E2A\u4F8B\u5B50\uFF1A

List<String> allList = new ArrayList<>();
Collections.addAll(allList, "\u6C89\u9ED8\u738B\u4E5D","\u6C89\u9ED8\u738B\u5341","\u6C89\u9ED8\u738B\u4E8C");
System.out.println("addAll \u540E\uFF1A" + allList);

System.out.println("\u662F\u5426\u6CA1\u6709\u4EA4\u96C6\uFF1A" + (Collections.disjoint(list, allList) ? "\u662F" : "\u5426"));

\u8F93\u51FA\u540E\uFF1A

\u539F\u59CB\u987A\u5E8F\uFF1A[\u6C89\u9ED8\u738B\u4E8C, \u6C89\u9ED8\u738B\u4E09, \u6C89\u9ED8\u738B\u56DB, \u6C89\u9ED8\u738B\u4E94, \u6C89\u9ED8\u738B\u516D]
addAll \u540E\uFF1A[\u6C89\u9ED8\u738B\u4E5D, \u6C89\u9ED8\u738B\u5341, \u6C89\u9ED8\u738B\u4E8C]
\u662F\u5426\u6CA1\u6709\u4EA4\u96C6\uFF1A\u5426

\u6574\u4F53\u4E0A\uFF0CCollections \u5DE5\u5177\u7C7B\u4F5C\u4E3A\u96C6\u5408\u6846\u67B6\u7684\u5927\u7BA1\u5BB6\uFF0C\u63D0\u4F9B\u4E86\u4E00\u4E9B\u975E\u5E38\u4FBF\u5229\u7684\u65B9\u6CD5\u4F9B\u6211\u4EEC\u8C03\u7528\uFF0C\u4E5F\u975E\u5E38\u5BB9\u6613\u638C\u63E1\uFF0C\u6CA1\u4EC0\u4E48\u96BE\u70B9\uFF0C\u770B\u770B\u65B9\u6CD5\u7684\u6CE8\u91CA\u5C31\u80FD\u5927\u81F4\u660E\u767D\u5E72\u561B\u7684\u3002

\u4E0D\u8FC7\uFF0C\u5DE5\u5177\u5C31\u653E\u5728\u90A3\u91CC\uFF0C\u7528\u662F\u4E00\u56DE\u4E8B\uFF0C\u4E3A\u4EC0\u4E48\u8981\u8FD9\u4E48\u7528\u5C31\u662F\u53E6\u5916\u4E00\u56DE\u4E8B\u4E86\u3002\u80FD\u4E0D\u80FD\u63D0\u9AD8\u81EA\u5DF1\u7684\u7F16\u7801\u6C34\u5E73\uFF0C\u5F88\u5927\u7A0B\u5EA6\u4E0A\u53D6\u51B3\u4E8E\u4F60\u5230\u5E95\u6709\u6CA1\u6709\u53BB\u94BB\u4E00\u94BB\u6E90\u7801\uFF0C\u770B\u8FD9\u4E9B\u8BBE\u8BA1 JDK \u7684\u5927\u5E08\u4EEC\u662F\u5982\u4F55\u5199\u4EE3\u7801\u7684\uFF0C\u5B66\u4F1A\u4E00\u62DB\u534A\u5F0F\uFF0C\u5728\u5DE5\u4F5C\u5F53\u4E2D\u8FD8\u662F\u80FD\u5F88\u5FEB\u8131\u9896\u800C\u51FA\u7684\u3002

\u6050\u6015 JDK \u7684\u8BBE\u8BA1\u8005\u662F\u8FD9\u4E2A\u4E16\u754C\u4E0A\u6700\u597D\u7684\u8001\u5E08\u4E86\uFF0C\u6587\u6863\u5199\u5F97\u4E0D\u80FD\u518D\u8BE6\u7EC6\u4E86\uFF0C\u4EE3\u7801\u5199\u5F97\u4E0D\u80FD\u518D\u4F18\u96C5\u4E86\uFF0C\u57FA\u672C\u4E0A\u90FD\u8FBE\u5230\u4E86\u6027\u80FD\u4E0A\u7684\u6781\u81F4\u3002

\u53EF\u80FD\u6709\u4EBA\u4F1A\u8BF4\uFF0C\u5DE5\u5177\u7C7B\u6CA1\u4EC0\u4E48\u9E1F\u7528\uFF0C\u4E0D\u8FC7\u662F\u8C03\u7528\u4E0B\u65B9\u6CD5\u800C\u5DF2\uFF0C\u4F46\u8FD9\u5C31\u5927\u9519\u7279\u9519\u4E86\uFF1A\u5982\u679C\u8981\u4F60\u6765\u5199\uFF0C\u4F60\u80FD\u5199\u51FA\u6765 Collections \u8FD9\u6837\u4E00\u4E2A\u5DE5\u5177\u7C7B\u5417\uFF1F

\u8FD9\u624D\u662F\u9AD8\u624B\u8981\u601D\u8003\u7684\u4E00\u4E2A\u95EE\u9898\u3002


`,30),f=s("\u6700\u8FD1\u6574\u7406\u4E86\u4E00\u4EFD\u725B\u903C\u7684\u5B66\u4E60\u8D44\u6599\uFF0C\u5305\u62EC\u4F46\u4E0D\u9650\u4E8EJava\u57FA\u7840\u90E8\u5206\uFF08JVM\u3001Java\u96C6\u5408\u6846\u67B6\u3001\u591A\u7EBF\u7A0B\uFF09\uFF0C\u8FD8\u56CA\u62EC\u4E86 "),x=n("strong",null,"\u6570\u636E\u5E93\u3001\u8BA1\u7B97\u673A\u7F51\u7EDC\u3001\u7B97\u6CD5\u4E0E\u6570\u636E\u7ED3\u6784\u3001\u8BBE\u8BA1\u6A21\u5F0F\u3001\u6846\u67B6\u7C7BSpring\u3001Netty\u3001\u5FAE\u670D\u52A1\uFF08Dubbo\uFF0C\u6D88\u606F\u961F\u5217\uFF09 \u7F51\u5173",-1),w=s(" \u7B49\u7B49\u7B49\u7B49\u2026\u2026\u8BE6\u60C5\u6233\uFF1A"),_={href:"https://tobebetterjavaer.com/pdf/programmer-111.html",target:"_blank",rel:"noopener noreferrer"},q=s("\u53EF\u4EE5\u8BF4\u662F2022\u5E74\u5168\u7F51\u6700\u5168\u7684\u5B66\u4E60\u548C\u627E\u5DE5\u4F5C\u7684PDF\u8D44\u6E90\u4E86"),L=n("p",null,[s("\u5173\u6CE8\u4E8C\u54E5\u7684\u539F\u521B\u516C\u4F17\u53F7 "),n("strong",null,"\u6C89\u9ED8\u738B\u4E8C"),s("\uFF0C\u56DE\u590D"),n("strong",null,"111"),s(" \u5373\u53EF\u514D\u8D39\u9886\u53D6\u3002")],-1),j=n("p",null,[n("img",{src:"http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/xingbiaogongzhonghao.png",alt:""})],-1);function C(E,S){const a=o("ExternalLinkIcon");return c(),l("div",null,[u,n("p",null,[k,n("a",d,[r,t(a)]),m]),v,n("p",null,[n("a",b,[g,t(a)]),y]),h,n("p",null,[f,x,w,n("a",_,[q,t(a)])]),L,j])}var D=e(i,[["render",C],["__file","collections.html.vue"]]);export{D as default};