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
reverse(List list)
\uFF1A\u53CD\u8F6C\u987A\u5E8Fshuffle(List list)
\uFF1A\u6D17\u724C\uFF0C\u5C06\u987A\u5E8F\u6253\u4E71sort(List list)
\uFF1A\u81EA\u7136\u5347\u5E8Fsort(List list, Comparator c)
\uFF1A\u6309\u7167\u81EA\u5B9A\u4E49\u7684\u6BD4\u8F83\u5668\u6392\u5E8Fswap(List list, int i, int j)
\uFF1A\u5C06 i \u548C j \u4F4D\u7F6E\u7684\u5143\u7D20\u4EA4\u6362\u4F4D\u7F6E\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]
binarySearch(List list, Object key)
\uFF1A\u4E8C\u5206\u67E5\u627E\u6CD5\uFF0C\u524D\u63D0\u662F List \u5DF2\u7ECF\u6392\u5E8F\u8FC7\u4E86max(Collection coll)
\uFF1A\u8FD4\u56DE\u6700\u5927\u5143\u7D20max(Collection coll, Comparator comp)
\uFF1A\u6839\u636E\u81EA\u5B9A\u4E49\u6BD4\u8F83\u5668\uFF0C\u8FD4\u56DE\u6700\u5927\u5143\u7D20min(Collection coll)
\uFF1A\u8FD4\u56DE\u6700\u5C0F\u5143\u7D20min(Collection coll, Comparator comp)
\uFF1A\u6839\u636E\u81EA\u5B9A\u4E49\u6BD4\u8F83\u5668\uFF0C\u8FD4\u56DE\u6700\u5C0F\u5143\u7D20fill(List list, Object obj)
\uFF1A\u4F7F\u7528\u6307\u5B9A\u5BF9\u8C61\u586B\u5145frequency(Collection c, Object o)
\uFF1A\u8FD4\u56DE\u6307\u5B9A\u5BF9\u8C61\u51FA\u73B0\u7684\u6B21\u6570\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]
\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
emptyXxx()
\uFF1A\u5236\u9020\u4E00\u4E2A\u7A7A\u7684\u4E0D\u53EF\u53D8\u96C6\u5408singletonXxx()
\uFF1A\u5236\u9020\u4E00\u4E2A\u53EA\u6709\u4E00\u4E2A\u5143\u7D20\u7684\u4E0D\u53EF\u53D8\u96C6\u5408unmodifiableXxx()
\uFF1A\u4E3A\u6307\u5B9A\u96C6\u5408\u5236\u4F5C\u4E00\u4E2A\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<>();
\u8FD8\u6709\u4E24\u4E2A\u65B9\u6CD5\u6BD4\u8F83\u5E38\u7528\uFF1A
addAll(Collection<? super T> c, T... elements)
\uFF0C\u5F80\u96C6\u5408\u4E2D\u6DFB\u52A0\u5143\u7D20disjoint(Collection<?> c1, Collection<?> c2)
\uFF0C\u5224\u65AD\u4E24\u4E2A\u96C6\u5408\u662F\u5426\u6CA1\u6709\u4EA4\u96C6\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