星空网 > 软件开发 > ASP.net

java集合常用类介绍

List接口:
一:ArrayList
    private static final int DEFAULT_CAPACITY = 10;
    private static final Object[] EMPTY_ELEMENTDATA = {}; 
    private transient Object[] elementData; 
    private int size; 
  用数组来存储元素,也就是基于 Object[]来管理元素,等于数组的加强版,在add()方法时先调用ensureCapacityInternal()方法来扩展容量。
二:LinkedList:
LinkedList<E>     extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable
实现了Deque,Cloneable接口:说明可以复制和具有队列的功能
继承了AbstractSequentialList抽象类,而AbstractSequentialList继承了abstactlist抽象类
   transient int size = 0;
    transient Node<E> first;
    transient Node<E> last;
具有两个属性: first,last,表示第一位和最后一位。
采用Node来表示表示每个元素。
Node是个内部静态类
    private static class Node<E> {
        E item;
        Node<E> next;
        Node<E> prev;
        Node(Node<E> prev, E element, Node<E> next) {
            this.item = element;
            this.next = next;
            this.prev = prev;
        }
    }
每个节点除了本身外,还有前后元素的引用,所有inkedList类是双向列表.
操作:
 private void linkFirst(E e)
private linkLast(E e)
特点:通过链表可以实现快速的插入,但是获取元素比较慢
而Arraylist.get()比较快,set()比较慢
 
Set接口:
1:特点:
A collection that contains no duplicate elements.  More formally, sets  contain no pair of elements e1 and e2such that 
 e1.equals(e2), and at most one null element..
也就是说我们可以用Set接口来存储非空的,不重复发到元素。
常用的类:HashSet和TreeSet
1:HashSet:无序集合,支持null值,采用Hash算法存放元素。
HashSet<E>     extends AbstractSet<E> implements Set<E>, Cloneable
 private transient HashMap<E,Object> map:
特点:
1:采用HashMap的key来存储集合
2:非线程安全:为了提高效率没有使用synchronized,所以如果多线程操作一个HashSet的话,则必须使用外部锁。
3:获取元素要通过iterator()返回一个迭代器,因此具有fail-fast特性:fail-fast是指在对集合进行迭代的时候,如果某个线程对集合进行了修改,那么这个时候就产生了fail-fast错误。
 
TreeSet类:是一个有序集合,不支持null值,采用二叉树实现排序
   TreeSet<E> extends AbstractSet<E>  implements NavigableSet<E>, Cloneable, java.io.Serializable
    private transient NavigableMap<E,Object> m; 
    private static final Object PRESENT = new Object();
继承了 NavigableSet接口,采用NavigableMap来存储元素,其实就是TreeMap来存储元素,如果你对Treemap比较了解的话,对TreeSet也就没问题的
特性:
1:采用TreeMap的key来存放元素,
1:支持排序:final Comparator<? super K> comparator,有个Comparator排序实例,在put()的时候,会先调用compare()
2:非线程安全的,需要通过外部锁来保证线程安全。
总结:1:ArrayList适合于快速读取,修改操作比较少的集合。 2:LinkedList适合于修改操作比较多,读取比较少的集合。 3:HashSet适合于存储非空,不重复的无序集合元素,效率比较高。 4:TreeSet适合于存储非空,不重复的有序集合元素,效率比HashSet低。

java企业级通用权限安全框架源码 SpringMVC mybatis or hibernate+ehcache shiro druid bootstrap HTML5

【java框架源码下载】





原标题:java集合常用类介绍

关键词:JAVA

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

亚马逊德国站是否可以无VAT发货?:https://www.kjdsnews.com/a/1353032.html
亚马逊德国站开店需要VAT税号吗?:https://www.kjdsnews.com/a/1353033.html
亚马逊德国站VAT办理中是否可以发货至FBA?:https://www.kjdsnews.com/a/1353034.html
亚马逊德国注册VAT税号的申请流程及时限:https://www.kjdsnews.com/a/1353035.html
亚马逊德国注册VAT税号的时间要求:https://www.kjdsnews.com/a/1353036.html
亚马逊德国注册VAT税号流程及时长:https://www.kjdsnews.com/a/1353037.html
合肥有什么约会的地方好玩的地方 合肥哪里适合情侣好玩的地方:https://www.vstour.cn/a/411237.html
曾家山滑雪场-曾家山滑雪场号码:https://www.vstour.cn/a/411238.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流