集合类面试题
详解可以看这里:https://blog.csdn.net/feiyanaffection/article/details/81394745
map集合
添加方法:map.put(key,value);
根据建删除元素:map.remove("key");
判断是否包含传入的建:map.containskey("key");
判断是否包含传入的值:map.containsvalue(value);
判断集合是否为空:map.isempty();
返回集合中键值对的个数:map.size();
获取到map集合里所有建的集合:map.keyset();
map集合迭代(双列集合)
fangfa通过map.keyset()获取到集合中所有建的集合保存到set集合中,然后通过迭代器或者增强for循环获取到map集合中键对应的值( map.get(key)根据键获取值)
通过map的内部接口Entry将map集合中的键值封装成了Entry对象,并存储在Set集合中【map.entrySet()】,然后通过迭代器或者增强for循环获取到对应的键值。
HashMap判断map集合中是否存在指定的key/value。
(map.containsKey("第二个")) //判断map集合中是否存在指定的key
map.containsValue(1)) //判断map集合中是否存在指定的Value
list集合:并发修改异常
解决方案:可以用list中特有的迭代器ListIterator中的add方法解决。
ArrayList中去重
1.创建一个新的集合,然后通过迭代器遍历老集合和新集合进行对比,如果新集合中不包含老集合的元素就将其添加至新集合中。(newlist.contains(list))
2.直接将list集合转换为set集合即可,因为set集合是唯一的。
数组转集合:aslist();
集合转数组:toArray();
ArrayList底层是数组查询快,增删慢,线程不安全,效率高,可以存储重复元素、LinkedList底层是链表查询慢,增删快,线程不安全,效率高,可以存储重复元素。
Vector:底层数据结构是数组,查询快,增删慢,线程安全,效率低,可以存储重复元素
集合和数组的区别
数组长度是固定的,集合的长度是可变的
数组中可以存储基本数据类型和引用数据类型,集合只能存储引用数据类型