中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java中集合的代碼示例

發布時間:2021-11-24 09:52:05 來源:億速云 閱讀:196 作者:小新 欄目:編程語言

這篇文章主要介紹了java中集合的代碼示例,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

List,Set,Map都是接口,前兩個繼承Collection接口,Map為獨立接口
Set的實現由HashSet,LinkedHashSet,TreeSet
List下有ArrayList,Vector,LinkedList
Map下有Hashtable,LinkedHashMap,HashMap,TreeMap
Collection還有Queue接口,實現有PriorityQueue

ArrayList、LinkedList、HashMap中都有字段叫modCount,字段用途:
/**

  • The number of times this list has been <i>structurally modified</i>.

  • Structural modifications are those that change the size of the

  • list, or otherwise perturb it in such a fashion that iterations in

  • progress may yield incorrect results.


  • <p>This field is used by the iterator and list iterator implementation

  • returned by the {@code iterator} and {@code listIterator} methods.

  • If the value of this field changes unexpectedly, the iterator (or list

  • iterator) will throw a {@code ConcurrentModificationException} in

  • response to the {@code next}, {@code remove}, {@code previous},

  • {@code set} or {@code add} operations.  This provides

  • <i>fail-fast</i> behavior, rather than non-deterministic behavior in

  • the face of concurrent modification during iteration.


  • <p><b>Use of this field by subclasses is optional.</b> If a subclass

  • wishes to provide fail-fast iterators (and list iterators), then it

  • merely has to increment this field in its {@code add(int, E)} and

  • {@code remove(int)} methods (and any other methods that it overrides

  • that result in structural modifications to the list).  A single call to

  • {@code add(int, E)} or {@code remove(int)} must add no more than

  • one to this field, or the iterators (and list iterators) will throw

  • bogus {@code ConcurrentModificationExceptions}.  If an implementation

  • does not wish to provide fail-fast iterators, this field may be

  • ignored.
    */

*
此列表在結構上被修改的次數。
結構修改是指改變
列出,或者以這樣一種方式干擾它
進度可能會產生不正確的結果。

<p>此字段由迭代器和列表迭代器實現使用
由@code迭代器和@code lis迭代器方法返回。
如果此字段的值意外更改,則迭代器(或列表
迭代器)將在
響應@code next,@code remove,@code previous,
@code set或@code add操作。這提供了
<i>fail fast</i>behavior,than non determinatic behavior in
迭代期間并發修改的面。

<p><b>按子類使用此字段是可選的。<b>如果是子類
希望提供fail-fast迭代器(和list迭代器),然后
只需在其@code add(int,e)中增加該字段,
@code remove(int)方法(以及它重寫的任何其他方法)
這將導致對列表進行結構修改)。打個電話給
@code add(int,e)或@code remove(int)必須添加不超過
一個到這個字段,或者迭代器(和列表迭代器)將拋出
偽造{@code ConcurrentModificationExceptions}。如果一個實現
不希望提供fail-fast迭代器,此字段可能是
已忽略。
/

List<String> list=new ArrayList();
list.add("config");
list.add("config");
list.add("config1");
list.add("config");
list.add("config");
list.add("config");
list.add("config");
list.add("config");
list.add("config");
list.add("config");
list.add("config");
list.forEach(s -> {
if("config1".equals(s)){
list.remove(s);
}
});

java.util.ConcurrentModificationException
at java.util.ArrayList.forEach(ArrayList.java:1260)
at com.mufeng.test.base.dataStructure.TestList.test1(TestList.java:31)

//HashSet  
//巧妙利用HashMap中key實現

private transient HashMap<E,Object> map;
// Dummy value to associate with an Object in the backing Map
// 仿真的值與Map中對象保持一致
private static final Object PRESENT = new Object();
public HashSet() {
map = new HashMap<>();
}

public boolean add(E e) {
return map.put(e, PRESENT)==null;
}

public boolean remove(Object o) {
return map.remove(o)==PRESENT;
}

//LinkedHashSet
//繼承HashSet
public class LinkedHashSet<E>
extends HashSet<E>
implements Set<E>, Cloneable, java.io.Serializable {

//初始容量為16
public LinkedHashSet() {
super(16, .75f, true);
}

//LinkedHashMap
//繼承HashMap 好多方法都可以用HashMap中的
public class LinkedHashMap<K,V>
extends HashMap<K,V>
implements Map<K,V>

static class Entry<K,V> extends HashMap.Node<K,V> {
Entry<K,V> before, after;
Entry(int hash, K key, V value, Node<K,V> next) {
super(hash, key, value, next);
}
}

/**
 * The head (eldest) of the doubly linked list.
 */
 //單鏈表 首位
transient LinkedHashMap.Entry<K,V> head;

/**
 * The tail (youngest) of the doubly linked list.
 */
 //末位
transient LinkedHashMap.Entry<K,V> tail;

/**
 * The iteration ordering method for this linked hash map: <tt>true</tt>
 * for access-order, <tt>false</tt> for insertion-order.
 *
 * @serial
 */
final boolean accessOrder;

//TreeSet
//具體實現為TreeMap
private transient NavigableMap<E,Object> m;

// Dummy value to associate with an Object in the backing Map
//仿真值
private static final Object PRESENT = new Object();

public TreeSet() {
    this(new TreeMap<E,Object>());
}
//利用TreeMap的key
public boolean add(E e) {
    return m.put(e, PRESENT)==null;
}

public boolean remove(Object o) {
    return m.remove(o)==PRESENT;
}

感謝你能夠認真閱讀完這篇文章,希望小編分享的“java中集合的代碼示例”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

库车县| 文安县| 忻城县| 咸阳市| 巴南区| 石狮市| 玛纳斯县| 淳化县| 遂川县| 华池县| 通州市| 西畴县| 宜兰县| 休宁县| 江津市| 洛扎县| 深水埗区| 甘南县| 舒城县| 桂林市| 平武县| 隆安县| 宜都市| 安义县| 新建县| 阜城县| 湟源县| 隆尧县| 喜德县| 兖州市| 金门县| 甘南县| 新平| 浠水县| 科技| 石屏县| 颍上县| 从江县| 浮山县| 获嘉县| 呈贡县|