公众号 微网站开发,西宁市城乡建设网站,国内知名网站建设排名,亳州网站制作List接口继承了Collection接口#xff0c;定义一个允许重复项的有序集合。该接口不但能够对列表的一部分进行处理#xff0c;还添加了面向位置的操作。
实际上有两种list#xff1a;一种是基本的ArrayList#xff0c;其优点在于随机访问元素#xff0c;另一种是更强大的L…List接口继承了Collection接口定义一个允许重复项的有序集合。该接口不但能够对列表的一部分进行处理还添加了面向位置的操作。
实际上有两种list一种是基本的ArrayList其优点在于随机访问元素另一种是更强大的LinkedList它并不是快速随机访问设计的而是具有更通用的方法。 List : 次序是List最重要的特点它保证维护元素特定的顺序。 ArrayList : 由数组实现的List。允许对元素进行快速随机访问但是向List中间插入与移除元素的速度很慢。 LinkedList : 对顺序访问进行了优化向List中间插入与删除的开销并不大随机访问则相对较慢。还具有下列方法addFirst(), addLast(), getFirst(), getLast(), removeFirst() 和 removeLast(), 这些方法 (没有在任何接口或基类中定义过)使得LinkedList可以当作堆栈、队列和双向队列使用。 Vector实现一个类似数组一样的表自动增加容量来容纳你所需的元素。使用下标存储和检索对象就象在一个标准的数组中一样。你也可以用一个迭代器从一个Vector中检索对象Vector是 需要zi料 绿色徽【vip1024b】
唯一的同步容器类!!
stack这个类从vector派生而来并增加了方法实现栈一种后进先出的存储结构。
List的用法示例
package collection;
import java.util.*;
public class SetExample {
public static void main(String[] args) {
List linkedList new LinkedList();
for (int i 0; i 5; i) {
linkedList.add(“a”i);
}
System.out.println(linkedList);
linkedList.add(3,“a100”);
System.out.println(linkedList);
linkedList.set(6,“a200”);
System.out.println(linkedList);
System.out.println(linkedList.get(2));
System.out.println(linkedList.indexOf(“a3”));
linkedList.remove(1);
System.out.println(linkedList);
}
} 六、list和set对比 Set子接口:无序不允许重复检索元素效率低下删除和插入效率高插入和删除不会引起元素位置改变。
List子接口:有序可以有重复元素和数组类似List可以动态增长查找元素效率高插入删除元素效率低因为会引起其他元素位置改变。
Set和List具体子类
Set
|————HashSet以哈希表的形式存放元素插入删除速度很快。
List
|————ArrayList动态数组
|————LinkedList链表、队列、堆栈。
七、map 1、map接口不是Collection接口的继承。
不重复的键到值的映射。
2、Map.Entry 接口
map的entrySet()方法返回一个实现map.entry接口的对象集合。集合中每个对象都是底层map中一个特定的键值对。
3、HashMap 类和 TreeMap 类
在map中插入、删除和定位元素HashMap是最好的选择。但如果您要按顺序遍历键那么TreeMap 会更好。根据集合大小先把元素添加HashMap再把这种映射转换成一个用于有序键遍历的TreeMap 可能更快。
为了优化hashmap空间的使用您可以调优初始容量和负载因子。这个treeMap没有调优选项因为该树总处于平衡状态。 hashtable实现一个映象所有的键必须非空。为了能高效的工作定义键的类必须实现hashcode()方法和equal()方法。这个类时前面Java实现的一个继承并且通常能在实现映象的其它类中更好地使用。 hashmap实现一个映象运行存储空对象而且允许键是空由于键必须是唯一的当然只能有一个空。 WeakHashMap如果有一个键对于一个对象而言不再被引用键将被舍弃WeakHashMap在具有大量数据时使用。 TreeMap 实现这样一个映象对象是按键升序排列的。
4、map的使用示例
以下程序演示了具体map类的使用。该程序对自命令行传递的词进行频率计数。hashmap起初用于数据存储。后来映射被转换为TreeMap以显示有序的键列列表。
package collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;
public class MapExample {
public static void main(String[] args) {
String[] array {“a”,“b”,“c”,“d”,“e”};
Map map new HashMap();
Integer ONE new Integer(1);
for (int i0, narray.length; in; i) {
String key array[i];
int frequency i1;
map.put(key, frequency);
}
System.out.println(map);
Map sortedMap new TreeMap(map);
System.out.println(sortedMap);
//hashmap的同步
Map map1 Collections.synchronizedMap(map);
System.out.println(map1);
}
}
5、控制台输出 八、HashMap、Hashtable、ConcurrentHashMap的原理与区别 1、HashTable 底层数组链表实现无论key还是value都不能为null线程安全实现线程安全的方式是在修改数据时锁住整个HashTable效率低ConcurrentHashMap做了相关优化 初始size为11扩容newsize olesize*21 计算index的方法index (hash 0x7FFFFFFF) % tab.length
2、HashMap
1HashMap简介 底层数组链表实现可以存储null键和null值线程不安全 初始size为16扩容newsize oldsize*2size一定为2的n次幂 扩容针对整个Map每次扩容时原来数组中的元素依次重新计算存放位置并重新插入 插入元素后才判断该不该扩容有可能无效扩容插入后如果扩容如果没有再次插入就会产生无效扩容 当Map中元素总数超过Entry数组的75%触发扩容操作为了减少链表长度元素分配更均匀 计算index方法index hash (tab.length – 1)
2HashMap加载因子 哈希冲突若干Key的哈希值按数组大小取模后如果落在同一个数组下标上将组成一条Entry链对Key的查找需要遍历Entry链上的每个元素执行equals()比较。 加载因子为了降低哈希冲突的概率默认当HashMap中的键值对达到数组大小的75%时即会触发扩容。因此如果预估容量是100即需要设定100/0.75134的数组大小。 空间换时间如果希望加快Key查找的时间还可以进一步降低加载因子加大初始大小以降低哈希冲突的概率。
3HashMap容量
HashMap和Hashtable都是用hash算法来决定其元素的存储因此HashMap和Hashtable的hash表包含如下属性 容量capacityhash表中桶的数量 初始化容量initial capacity创建hash表时桶的数量HashMap允许在构造器中指定初始化容量 尺寸size当前hash表中记录的数量 负载因子load factor负载因子等于“size/capacity”。负载因子为0表示空的hash表0.5表示半满的散列表依此类推。轻负载的散列表具有冲突少、适宜插入与查询的特点但是使用Iterator迭代元素时比较慢
除此之外hash表里还有一个“负载极限”“负载极限”是一个01的数值“负载极限”决定了hash表的最大填满程度。当hash表中的负载因子达到指定的“负载极限”时hash表会自动成倍地增加容量桶的数量并将原有的对象重新分配放入新的桶内这称为rehashing。
HashMap和Hashtable的构造器允许指定一个负载极限HashMap和Hashtable默认的“负载极限”为0.75这表明当该hash表的3/4已经被填满时hash表会发生rehashing。
笔者福利
以下是小编自己针对马上即将到来的金九银十准备的一套“面试宝典”不管是技术还是HR的问题都有针对性的回答。
有了这个面试踩雷不存在的
回馈粉丝诚意满满 hash表会发生rehashing。
笔者福利
以下是小编自己针对马上即将到来的金九银十准备的一套“面试宝典”不管是技术还是HR的问题都有针对性的回答。
有了这个面试踩雷不存在的
回馈粉丝诚意满满
[外链图片转存中…(img-GEgc3vXh-1710358195397)] [外链图片转存中…(img-7u9zz3mh-1710358195398)] [外链图片转存中…(img-s1kdbJeB-1710358195399)] [外链图片转存中…(img-6cV4LgY7-1710358195399)]