java集合类

集合类示意图

集合类

从图中可知 Collection是 List,Set,Quene 的根接口,Map 是另外一个接口 Iterator用于遍历集合中元素的接口java

下面是各集合的特性数据库

集合名 是否有序 是否容许元素重复
Liist
HashSet
TreeSet 是(二叉排序树)
HashMap key惟一,value可重复
TreeMap 是(二叉排序树) 同上

[集合类特色]安全

集合类方法

遍历Map方法

  1. 方法一
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
for (Map.Entry<Integer, Integer> entry : map.entrySet()) {  
    System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());  
}
  1. 方法二
Map<Integer, Integer> map = new HashMap<Integer, Integer>();  
Iterator<Map.Entry<Integer, Integer>> entries = map.entrySet().iterator();  
while (entries.hasNext()) {  
    Map.Entry<Integer, Integer> entry = entries.next();  
    System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());  
}

LinkList 方法

  • peek() 或 element() 获取但不移除此列表的头
  • poll() 或 remove() 获取并移除此列表的头
  • offer(4) 将指定元素添加到此列表的末尾

TreeMap

  • 若是key不实现比较方法
TreeMap<User, Object> tMap = new TreeMap<>(new Comparator<User>() {
			
			@Override
			public int compare(User o1, User o2) {
				// TODO Auto-generated method stub
				return o1.getAge() == o2.getAge() ?0:(o1.getAge()>o2.getAge()?1:-1);
			}
					
});
  • 若是key实现了Comparable接口 TreeMap 能够不实现Comparator接口,但实现了以它为先。

OTHER

HashMap 在新版jdk8 中,在数据量大的时候不会采用hash方法哈希key,会采用b-tree,就和如今数据库采用b-tree的缘由同样,当数据量过大的时候,hash会形成大多数数据hash值同样,再作偏移处理,反而影响性能。微信

通常集合的加载因子为0.75 ArrayList 初始化容量为10ide

HashMap 初始化容量为16 即便你初始化的时候指定一个值去初始化容量 其值也不必定是你指定的那个值,其必定是2的幂次方,代码以下性能

static final int tableSizeFor(int cap) {
        int n = cap - 1;
        n |= n >>> 1;
        n |= n >>> 2;
        n |= n >>> 4;
        n |= n >>> 8;
        n |= n >>> 16;
        return (n < 0) ? 1 : (n >= MAXIMUM_CAPACITY) ? MAXIMUM_CAPACITY : n + 1;
    }

几组区别

  • HashMap 和 HashTable 、ConcurrentHashMap 区别 - HashTable和ConcurrentHashMap 是线程安全的,如今主要用 后者 - HashTable key值不支持null ,其余支持为null - HashTable 是所有都用的synchronized 加锁,而ConcurrentHashMap使用的分段锁,并且在读取value不加锁,用的是Segment锁(实际上是一种ReentrantLock锁)线程

  • LinkedList 和 ArrayList3d

    • ArrayList查询修改快,LinkedList 增删快
    • LinkedList 是双向循环链表,也就是具备队列和栈的特性 LinkedList

欢迎关注个人微信公众号cobs-snail,让咱们一块儿前进吧!!code

前进吧蜗牛

相关文章
相关标签/搜索