可以登录国外网站吗宿州城乡建设局网站
news/
2025/9/22 18:22:47/
文章来源:
可以登录国外网站吗,宿州城乡建设局网站,电商线上推广渠道,菜鸟python在线编程转载自 JAVA面试常考系列三
题目一
什么是迭代器(Iterator)#xff1f;
迭代器#xff08;iterator#xff09;是一种对象#xff0c;它能够用来遍历标准模板库容器中的部分或全部元素#xff0c;每个迭代器对象代表容器中确定的地址。迭代器提供了一种方法#xff0c;可…转载自 JAVA面试常考系列三
题目一
什么是迭代器(Iterator)
迭代器iterator是一种对象它能够用来遍历标准模板库容器中的部分或全部元素每个迭代器对象代表容器中确定的地址。迭代器提供了一种方法可以用来访问一个容器对象中各个元素而又不需暴露该对象的内部细节。
Iterator接口提供了很多对集合元素进行迭代的方法。每一个集合类都包含了可以返回迭代器实例的迭代方法。迭代器可以在迭代的过程中删除底层集合的元素。题目二Iterator和ListIterator的区别是什么
区别有一下几点1.使用范围
使用范围不同Iterator可以应用于所有的集合Set、List和Map和这些集合的子类型。而ListIterator只能用于List及其子类型。
2.add方法
ListIterator有add方法可以向List中添加对象而Iterator不能。
3.逆向遍历
ListIterator和Iterator都有hasNext()和next()方法可以实现顺序向后遍历但是ListIterator有hasPrevious()和previous()方法可以实现逆向顺序向前遍历。Iterator不可以。
4.索引定位
ListIterator可以定位当前索引的位置nextIndex()和previousIndex()可以实现。Iterator没有此功能。
5.修改对象
都可实现删除操作但是ListIterator可以实现对象的修改set()方法可以实现。Iterator仅能遍历不能修改。题目三
快速失败(fail-fast)和安全失败(fail-safe)的区别是什么
Iterator的安全失败是基于对底层集合做拷贝所以它不受源集合上修改的影响。java.util包下面的所有的集合类都是快速失败的而java.util.concurrent包下面的所有的类都是安全失败的。快速失败的迭代器会抛出ConcurrentModificationException异常而安全失败的迭代器永远不会抛出这样的异常。题目四
Java中的HashMap的工作原理是什么存储方式
Java中的HashMap是以键值对(key-value)的形式存储元素的。
调用原理
HashMap需要一个hash函数它使用hashCode()和equals()方法来向集合/从集合添加和检索元素。当调用put()方法的时候HashMap会计算key的hash值然后把键值对存储在集合中合适的索引上。如果key已经存在了value会被更新成新值。
其它热性
HashMap的一些重要的特性是它的容量(capacity)负载因子(load factor)和扩容极限(threshold resizing)。题目五hashCode()和equals()方法的重要性体现在什么地方
Java中的HashMap使用hashCode()和equals()方法来确定键值对的索引当根据键获取值的时候也会用到这两个方法。如果没有正确的实现这两个方法两个不同的键可能会有相同的hash值因此可能会被集合认为是相等的。而且这两个方法也用来发现重复元素。所以这两个方法的实现对HashMap的精确性和正确性是至关重要的。题目六HashMap和Hashtable有什么区别区别一
HashMap几乎可以等价于Hashtable除了HashMap是非synchronized的并可以接受nullHashMap可以接受为null的键值(key)和值(value)而Hashtable则不行。
区别二
HashMap是非synchronized而Hashtable是synchronized这意味着Hashtable是线程安全的多个线程可以共享一个Hashtable而如果没有正确的同步的话多个线程是不能共享HashMap的。Java 5提供了ConcurrentHashMap它是HashTable的替代比HashTable的扩展性更好。
区别三
HashMap的迭代器(Iterator)是fail-fast迭代器而Hashtable的enumerator迭代器不是fail-fast的。所以当有其它线程改变了HashMap的结构增加或者移除元素将会抛出ConcurrentModificationException但迭代器本身的remove()方法移除元素则不会抛出ConcurrentModificationException异常。但这并不是一个一定发生的行为要看JVM。这条同样也是Enumeration和Iterator的区别。
区别四
由于Hashtable是线程安全的也是synchronized所以在单线程环境下它比HashMap要慢。如果你不需要同步只需要单一线程那么使用HashMap性能要好过Hashtable。
区别五
HashMap不能保证随着时间的推移Map中的元素次序是不变的。题目七数组(Array)和列表(ArrayList)有什么区别什么时候应该使用Array而不是ArrayList区别
1、Array可以包含基本类型和对象类型ArrayList只能包含对象类型。
2、Array大小是固定的ArrayList的大小是动态变化的。
3、ArrayList提供了更多的方法和特性比如addAll()removeAll()iterator()等等。
应用
对于基本类型数据集合使用自动装箱来减少编码工作量。但是当处理固定大小的基本数据类型的时候这种方式相对比较慢。题目八ArrayList和LinkedList有什么区别
1、ArrayList是基于动态数组实现的LinkedList是基于链表的数据结构。
2、get访问List内部任意元素时ArrayList的性能要比LinkedList性能好。LinkedList中的get方法是要按照顺序从列表的一端开始检查直到另一端。
3、对于新增和删除操作LinkedList要强于ArrayList因为ArrayList要移动数据。
4、LinkedList比ArrayList更占内存因为LinkedList为每一个节点存储了两个引用一个指向前一个元素一个指向下一个元素。题目九Comparable和Comparator接口是干什么的列出它们的区别。
Java提供了只包含一个compareTo()方法的Comparable接口。这个方法用来给两个对象排序结果返回负数0正数来表明输入对象小于等于大于已经存在的对象。
Java提供了包含compare()和equals()两个方法的Comparator接口。compare()方法用来给两个输入参数排序返回负数0正数表明第一个参数是小于等于大于第二个参数。equals()方法需要一个对象作为参数来决定输入参数是否和comparator相等。只有当输入参数也是一个comparator并且输入参数和当前comparator的排序结果是相同的时候比较结果才返回true。题目十
什么是Java优先级队列(Priority Queue)
PriorityQueue是一个基于优先级堆的无界队列队列的元素是依据自然顺序(natural order)排序的。在创建的时候我们可以给它提供一个负责给元素排序的比较器。PriorityQueue不允许null值因为他们没有自然顺序或者说他们没有任何的相关联的比较器。最后PriorityQueue不是线程安全的入队和出队的时间复杂度是O(log(n))。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/909960.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!