重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇文章主要介绍了java中集合的代码示例,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
成都创新互联专注为客户提供全方位的互联网综合服务,包含不限于成都网站建设、网站设计、平顺网络推广、小程序开发、平顺网络营销、平顺企业策划、平顺品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;成都创新互联为所有大学生创业者提供平顺建站搭建服务,24小时服务热线:028-86922220,官方网址:www.cdcxhl.com
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 structurally modified.
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.
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
fail-fast behavior, rather than non-deterministic behavior in
the face of concurrent modification during iteration.
Use of this field by subclasses is optional. 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.
*/
* 此字段由迭代器和列表迭代器实现使用
此列表在结构上被修改的次数。
结构修改是指改变
列出,或者以这样一种方式干扰它
进度可能会产生不正确的结果。
如果此字段的值意外更改,则迭代器(或列表
迭代器)将在
响应@code next,@code remove,@code previous,
@code set或@code add操作。这提供了
fail fastbehavior,than non determinatic behavior in
迭代期间并发修改的面。
按子类使用此字段是可选的。如果是子类
希望提供fail-fast迭代器(和list迭代器),然后
只需在其@code add(int,e)中增加该字段,
@code remove(int)方法(以及它重写的任何其他方法)
这将导致对列表进行结构修改)。打个电话给
@code add(int,e)或@code remove(int)必须添加不超过
一个到这个字段,或者迭代器(和列表迭代器)将抛出
伪造{@code ConcurrentModificationExceptions}。如果一个实现
不希望提供fail-fast迭代器,此字段可能是
已忽略。
/
List
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
// 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
extends HashSet
implements Set
//初始容量为16
public LinkedHashSet() {
super(16, .75f, true);
}
//LinkedHashMap
//继承HashMap 好多方法都可以用HashMap中的
public class LinkedHashMap
extends HashMap
implements Map
static class Entry
Entry
Entry(int hash, K key, V value, Node
super(hash, key, value, next);
}
}
/** * The head (eldest) of the doubly linked list. */ //单链表 首位 transient LinkedHashMap.Entryhead; /** * The tail (youngest) of the doubly linked list. */ //末位 transient LinkedHashMap.Entry tail; /** * The iteration ordering method for this linked hash map: true * for access-order, false for insertion-order. * * @serial */ final boolean accessOrder;
//TreeSet
//具体实现为TreeMap
private transient NavigableMap
// Dummy value to associate with an Object in the backing Map //仿真值 private static final Object PRESENT = new Object(); public TreeSet() { this(new TreeMap()); } //利用TreeMap的key public boolean add(E e) { return m.put(e, PRESENT)==null; } public boolean remove(Object o) { return m.remove(o)==PRESENT; }
感谢你能够认真阅读完这篇文章,希望小编分享的“java中集合的代码示例”这篇文章对大家有帮助,同时也希望大家多多支持创新互联,关注创新互联行业资讯频道,更多相关知识等着你来学习!