统计
  • 建站日期:2021-03-10
  • 文章总数:518 篇
  • 评论总数:151 条
  • 分类总数:32 个
  • 最后更新:4月20日
文章 未分类

Vector和Arraylist的区别

梦幻书涯
首页 未分类 正文
  1. <%! Vector v=new Vector();
  2.     int i=0;
  3.     ServletContext  application;
  4.     synchronized void leaveWord(String s) { //留言方法
  5.         application=getServletContext();
  6.         i++;
  7.         v.add("No."+i+","+s);
  8.         application.setAttribute("Mess",v);
  9.     }
  10. %>
</div>
<p style="font-size:15px;word-wrap:break-word;border-top:0px;font-family:inherit;border-right:0px;vertical-align:baseline;border-bottom:0px;word-break:break-all;outline-width:0px;padding-bottom:0px;padding-top:0px;outline-style:none;padding-left:0px;border-left:0px;margin:0px 0px 5px;outline-color:invert;padding-right:0px;text-indent:2em;-webkit-tap-highlight-color:rgba(255, 0, 0, 0);">
    瞪眼一看,Vector 是啥?为什么不用 ArrayList 。基础差是该的,应该补了。
</p>
<p style="font-size:15px;word-wrap:break-word;border-top:0px;font-family:inherit;border-right:0px;vertical-align:baseline;border-bottom:0px;word-break:break-all;outline-width:0px;padding-bottom:0px;padding-top:0px;outline-style:none;padding-left:0px;border-left:0px;margin:0px 0px 5px;outline-color:invert;padding-right:0px;text-indent:2em;-webkit-tap-highlight-color:rgba(255, 0, 0, 0);">
    然后百度查了一下,得知 Vector 是线程安全的,ArrayList 是不安全的(效率高)。
</p>
<hr style="word-wrap:break-word;word-break:break-all;margin:0px 0px 5px;-webkit-tap-highlight-color:rgba(255, 0, 0, 0);" />
<p style="font-size:15px;word-wrap:break-word;border-top:0px;font-family:inherit;border-right:0px;vertical-align:baseline;border-bottom:0px;word-break:break-all;outline-width:0px;padding-bottom:0px;padding-top:0px;outline-style:none;padding-left:0px;border-left:0px;margin:0px 0px 5px;outline-color:invert;padding-right:0px;text-indent:2em;-webkit-tap-highlight-color:rgba(255, 0, 0, 0);">
    下面是 来自&nbsp;<a class="PostIndex-authorName" style="font-size:15px;text-decoration:none;border-top:0px;font-family:inherit;border-right:0px;vertical-align:baseline;border-bottom:0px;color:#2F889A;outline-width:0px;padding-bottom:0px;padding-top:0px;outline-style:none;padding-left:0px;border-left:0px;margin:0px;outline-color:invert;padding-right:0px;-webkit-tap-highlight-color:rgba(255, 0, 0, 0);" href="https://liuyanzhao.com/wp-content/themes/begin/inc/go.php?url=https://www.zhihu.com/people/13641283343" rel="noopener noreferrer" target="_blank">清浅池塘</a>&nbsp;的一篇文章,该博主的文章都很不错。下面转载一下
</p>
<p style="font-size:15px;word-wrap:break-word;border-top:0px;font-family:inherit;border-right:0px;vertical-align:baseline;border-bottom:0px;word-break:break-all;outline-width:0px;padding-bottom:0px;padding-top:0px;outline-style:none;padding-left:0px;border-left:0px;margin:0px 0px 5px;outline-color:invert;padding-right:0px;text-indent:2em;-webkit-tap-highlight-color:rgba(255, 0, 0, 0);">
    前几篇文章我们重点说了ArrayLIst,是时候放出这张图了。
</p>
<p style="font-size:15px;word-wrap:break-word;border-top:0px;font-family:inherit;border-right:0px;vertical-align:baseline;border-bottom:0px;word-break:break-all;outline-width:0px;padding-bottom:0px;padding-top:0px;outline-style:none;padding-left:0px;border-left:0px;margin:0px 0px 5px;outline-color:invert;padding-right:0px;text-indent:2em;-webkit-tap-highlight-color:rgba(255, 0, 0, 0);">
    <img class="size-full wp-image-6415 aligncenter" style="font-size:15px;max-width:100%;border-top:0px;height:auto;font-family:inherit;border-right:0px;vertical-align:middle;border-bottom:0px;outline-width:0px;padding-bottom:0px;padding-top:0px;outline-style:none;padding-left:0px;border-left:0px;margin:0px auto 10px;display:block;outline-color:invert;padding-right:0px;-webkit-tap-highlight-color:rgba(255, 0, 0, 0);" alt="Vector和Arraylist的区别" src="https://liuyanzhao.com/wp-content/uploads/2017/10/vector.png" width="600" height="436" sizes="(max-width: 600px) 100vw, 600px" srcset="https://liuyanzhao.com/wp-content/uploads/2017/10/vector.png 600w, https://liuyanzhao.com/wp-content/uploads/2017/10/vector-300x218.png 300w" data-original="https://liuyanzhao.com/wp-content/uploads/2017/10/vector.png" />
</p>
<p style="font-size:15px;word-wrap:break-word;border-top:0px;font-family:inherit;border-right:0px;vertical-align:baseline;border-bottom:0px;word-break:break-all;outline-width:0px;padding-bottom:0px;padding-top:0px;outline-style:none;padding-left:0px;border-left:0px;margin:0px 0px 5px;outline-color:invert;padding-right:0px;text-indent:2em;-webkit-tap-highlight-color:rgba(255, 0, 0, 0);">
    这张图里的内容对我们学习<a title="查看与 Java 相关的文章" style="font-size:15px;text-decoration:none;border-top:0px;font-family:inherit;border-right:0px;vertical-align:baseline;border-bottom:0px;color:#2F889A;outline-width:0px;padding-bottom:0px;padding-top:0px;outline-style:none;padding-left:0px;border-left:0px;margin:0px;outline-color:invert;padding-right:0px;-webkit-tap-highlight-color:rgba(255, 0, 0, 0);" href="https://liuyanzhao.com/tag/java/" target="_blank">Java</a>来说,非常的重要,白色的部分是需要去了解的,黄色部分是我们要去重点了解的,不但要知道怎么去用,至少还需要读一次源码。绿色部分内容已经很少用了,但在面试题中有可能会问到,我们来看一个经常出现的面试题:<b style="font-size:15px;border-top:0px;font-family:inherit;border-right:0px;vertical-align:baseline;border-bottom:0px;outline-width:0px;padding-bottom:0px;padding-top:0px;outline-style:none;padding-left:0px;border-left:0px;margin:0px;outline-color:invert;padding-right:0px;-webkit-tap-highlight-color:rgba(255, 0, 0, 0);">Arraylist与Vector的区别是什么?</b>
</p>
<p style="font-size:15px;word-wrap:break-word;border-top:0px;font-family:inherit;border-right:0px;vertical-align:baseline;border-bottom:0px;word-break:break-all;outline-width:0px;padding-bottom:0px;padding-top:0px;outline-style:none;padding-left:0px;border-left:0px;margin:0px 0px 5px;outline-color:invert;padding-right:0px;text-indent:2em;-webkit-tap-highlight-color:rgba(255, 0, 0, 0);">
    <b style="font-size:15px;border-top:0px;font-family:inherit;border-right:0px;vertical-align:baseline;border-bottom:0px;outline-width:0px;padding-bottom:0px;padding-top:0px;outline-style:none;padding-left:0px;border-left:0px;margin:0px;outline-color:invert;padding-right:0px;-webkit-tap-highlight-color:rgba(255, 0, 0, 0);">首先我们给出标准答案:</b>
</p>
<p style="font-size:15px;word-wrap:break-word;border-top:0px;font-family:inherit;border-right:0px;vertical-align:baseline;border-bottom:0px;word-break:break-all;outline-width:0px;padding-bottom:0px;padding-top:0px;outline-style:none;padding-left:0px;border-left:0px;margin:0px 0px 5px;outline-color:invert;padding-right:0px;text-indent:2em;-webkit-tap-highlight-color:rgba(255, 0, 0, 0);">
    <b style="font-size:15px;border-top:0px;font-family:inherit;border-right:0px;vertical-align:baseline;border-bottom:0px;outline-width:0px;padding-bottom:0px;padding-top:0px;outline-style:none;padding-left:0px;border-left:0px;margin:0px;outline-color:invert;padding-right:0px;-webkit-tap-highlight-color:rgba(255, 0, 0, 0);">1、Vector是线程安全的,ArrayList不是线程安全的。</b>
</p>
<p style="font-size:15px;word-wrap:break-word;border-top:0px;font-family:inherit;border-right:0px;vertical-align:baseline;border-bottom:0px;word-break:break-all;outline-width:0px;padding-bottom:0px;padding-top:0px;outline-style:none;padding-left:0px;border-left:0px;margin:0px 0px 5px;outline-color:invert;padding-right:0px;text-indent:2em;-webkit-tap-highlight-color:rgba(255, 0, 0, 0);">
    <b style="font-size:15px;border-top:0px;font-family:inherit;border-right:0px;vertical-align:baseline;border-bottom:0px;outline-width:0px;padding-bottom:0px;padding-top:0px;outline-style:none;padding-left:0px;border-left:0px;margin:0px;outline-color:invert;padding-right:0px;-webkit-tap-highlight-color:rgba(255, 0, 0, 0);">2、ArrayList在底层数组不够用时在原来的基础上扩展0.5倍,Vector是扩展1倍。</b>
</p>
<p style="font-size:15px;word-wrap:break-word;border-top:0px;font-family:inherit;border-right:0px;vertical-align:baseline;border-bottom:0px;word-break:break-all;outline-width:0px;padding-bottom:0px;padding-top:0px;outline-style:none;padding-left:0px;border-left:0px;margin:0px 0px 5px;outline-color:invert;padding-right:0px;text-indent:2em;-webkit-tap-highlight-color:rgba(255, 0, 0, 0);">
    &nbsp;
</p>
<p style="font-size:15px;word-wrap:break-word;border-top:0px;font-family:inherit;border-right:0px;vertical-align:baseline;border-bottom:0px;word-break:break-all;outline-width:0px;padding-bottom:0px;padding-top:0px;outline-style:none;padding-left:0px;border-left:0px;margin:0px 0px 5px;outline-color:invert;padding-right:0px;text-indent:2em;-webkit-tap-highlight-color:rgba(255, 0, 0, 0);">
    <strong style="font-size:15px;border-top:0px;font-family:inherit;border-right:0px;vertical-align:baseline;border-bottom:0px;outline-width:0px;padding-bottom:0px;padding-top:0px;outline-style:none;padding-left:0px;border-left:0px;margin:0px;outline-color:invert;padding-right:0px;-webkit-tap-highlight-color:rgba(255, 0, 0, 0);">1、看上图Vector和ArrayList一样,都继承自List,来看一下Vector的源码</strong>
</p>
<p style="font-size:15px;word-wrap:break-word;border-top:0px;font-family:inherit;border-right:0px;vertical-align:baseline;border-bottom:0px;word-break:break-all;outline-width:0px;padding-bottom:0px;padding-top:0px;outline-style:none;padding-left:0px;border-left:0px;margin:0px 0px 5px;outline-color:invert;padding-right:0px;text-indent:2em;-webkit-tap-highlight-color:rgba(255, 0, 0, 0);">
    <img class="size-full wp-image-6416 aligncenter" style="font-size:15px;max-width:100%;border-top:0px;height:auto;font-family:inherit;border-right:0px;vertical-align:middle;border-bottom:0px;outline-width:0px;padding-bottom:0px;padding-top:0px;outline-style:none;padding-left:0px;border-left:0px;margin:0px auto 10px;display:block;outline-color:invert;padding-right:0px;-webkit-tap-highlight-color:rgba(255, 0, 0, 0);" alt="Vector和Arraylist的区别" src="https://liuyanzhao.com/wp-content/uploads/2017/10/v2.png" width="675" height="239" sizes="(max-width: 675px) 100vw, 675px" srcset="https://liuyanzhao.com/wp-content/uploads/2017/10/v2.png 675w, https://liuyanzhao.com/wp-content/uploads/2017/10/v2-300x106.png 300w" data-original="https://liuyanzhao.com/wp-content/uploads/2017/10/v2.png" />
</p>
<p style="font-size:15px;word-wrap:break-word;border-top:0px;font-family:inherit;border-right:0px;vertical-align:baseline;border-bottom:0px;word-break:break-all;outline-width:0px;padding-bottom:0px;padding-top:0px;outline-style:none;padding-left:0px;border-left:0px;margin:0px 0px 5px;outline-color:invert;padding-right:0px;text-indent:2em;-webkit-tap-highlight-color:rgba(255, 0, 0, 0);">
    实现了List接口,底层和ArrayList一样,都是数组来实现的。
</p>
<p style="font-size:15px;word-wrap:break-word;border-top:0px;font-family:inherit;border-right:0px;vertical-align:baseline;border-bottom:0px;word-break:break-all;outline-width:0px;padding-bottom:0px;padding-top:0px;outline-style:none;padding-left:0px;border-left:0px;margin:0px 0px 5px;outline-color:invert;padding-right:0px;text-indent:2em;-webkit-tap-highlight-color:rgba(255, 0, 0, 0);">
    &nbsp;
</p>
<p style="font-size:15px;word-wrap:break-word;border-top:0px;font-family:inherit;border-right:0px;vertical-align:baseline;border-bottom:0px;word-break:break-all;outline-width:0px;padding-bottom:0px;padding-top:0px;outline-style:none;padding-left:0px;border-left:0px;margin:0px 0px 5px;outline-color:invert;padding-right:0px;text-indent:2em;-webkit-tap-highlight-color:rgba(255, 0, 0, 0);">
    <strong style="font-size:15px;border-top:0px;font-family:inherit;border-right:0px;vertical-align:baseline;border-bottom:0px;outline-width:0px;padding-bottom:0px;padding-top:0px;outline-style:none;padding-left:0px;border-left:0px;margin:0px;outline-color:invert;padding-right:0px;-webkit-tap-highlight-color:rgba(255, 0, 0, 0);">2、分别看一下这两个类的add方法</strong>
</p>
<p style="font-size:15px;word-wrap:break-word;border-top:0px;font-family:inherit;border-right:0px;vertical-align:baseline;border-bottom:0px;word-break:break-all;outline-width:0px;padding-bottom:0px;padding-top:0px;outline-style:none;padding-left:0px;border-left:0px;margin:0px 0px 5px;outline-color:invert;padding-right:0px;text-indent:2em;-webkit-tap-highlight-color:rgba(255, 0, 0, 0);">
    首先来看ArrayList的add源码
</p>
<p style="font-size:15px;word-wrap:break-word;border-top:0px;font-family:inherit;border-right:0px;vertical-align:baseline;border-bottom:0px;word-break:break-all;outline-width:0px;padding-bottom:0px;padding-top:0px;outline-style:none;padding-left:0px;border-left:0px;margin:0px 0px 5px;outline-color:invert;padding-right:0px;text-indent:2em;-webkit-tap-highlight-color:rgba(255, 0, 0, 0);">
    <img class="alignnone size-full wp-image-7636" style="font-size:15px;max-width:100%;border-top:0px;height:auto;font-family:inherit;border-right:0px;vertical-align:middle;border-bottom:0px;outline-width:0px;padding-bottom:0px;padding-top:0px;outline-style:none;padding-left:0px;border-left:0px;margin:0px 0px 10px;display:block;outline-color:invert;padding-right:0px;-webkit-tap-highlight-color:rgba(255, 0, 0, 0);" alt="Vector和Arraylist的区别" src="https://liuyanzhao.com/wp-content/uploads/2017/10/v2-b19db72823330f12eed436798e816591_hd.jpg" width="681" height="99" sizes="(max-width: 681px) 100vw, 681px" srcset="https://liuyanzhao.com/wp-content/uploads/2017/10/v2-b19db72823330f12eed436798e816591_hd.jpg 681w, https://liuyanzhao.com/wp-content/uploads/2017/10/v2-b19db72823330f12eed436798e816591_hd-300x44.jpg 300w" data-original="https://liuyanzhao.com/wp-content/uploads/2017/10/v2-b19db72823330f12eed436798e816591_hd.jpg" />
</p>
<p style="font-size:15px;word-wrap:break-word;border-top:0px;font-family:inherit;border-right:0px;vertical-align:baseline;border-bottom:0px;word-break:break-all;outline-width:0px;padding-bottom:0px;padding-top:0px;outline-style:none;padding-left:0px;border-left:0px;margin:0px 0px 5px;outline-color:invert;padding-right:0px;text-indent:2em;-webkit-tap-highlight-color:rgba(255, 0, 0, 0);">
    &nbsp;
</p>
<p style="font-size:15px;word-wrap:break-word;border-top:0px;font-family:inherit;border-right:0px;vertical-align:baseline;border-bottom:0px;word-break:break-all;outline-width:0px;padding-bottom:0px;padding-top:0px;outline-style:none;padding-left:0px;border-left:0px;margin:0px 0px 5px;outline-color:invert;padding-right:0px;text-indent:2em;-webkit-tap-highlight-color:rgba(255, 0, 0, 0);">
    再看Vector的add源码
</p>
<p style="font-size:15px;word-wrap:break-word;border-top:0px;font-family:inherit;border-right:0px;vertical-align:baseline;border-bottom:0px;word-break:break-all;outline-width:0px;padding-bottom:0px;padding-top:0px;outline-style:none;padding-left:0px;border-left:0px;margin:0px 0px 5px;outline-color:invert;padding-right:0px;text-indent:2em;-webkit-tap-highlight-color:rgba(255, 0, 0, 0);">
    <img class="size-full wp-image-6418 aligncenter" style="font-size:15px;max-width:100%;border-top:0px;height:auto;font-family:inherit;border-right:0px;vertical-align:middle;border-bottom:0px;outline-width:0px;padding-bottom:0px;padding-top:0px;outline-style:none;padding-left:0px;border-left:0px;margin:0px auto 10px;display:block;outline-color:invert;padding-right:0px;-webkit-tap-highlight-color:rgba(255, 0, 0, 0);" alt="Vector和Arraylist的区别" src="https://liuyanzhao.com/wp-content/uploads/2017/10/v4.png" width="655" height="110" sizes="(max-width: 655px) 100vw, 655px" srcset="https://liuyanzhao.com/wp-content/uploads/2017/10/v4.png 655w, https://liuyanzhao.com/wp-content/uploads/2017/10/v4-300x50.png 300w" data-original="https://liuyanzhao.com/wp-content/uploads/2017/10/v4.png" />
</p>
<p style="font-size:15px;word-wrap:break-word;border-top:0px;font-family:inherit;border-right:0px;vertical-align:baseline;border-bottom:0px;word-break:break-all;outline-width:0px;padding-bottom:0px;padding-top:0px;outline-style:none;padding-left:0px;border-left:0px;margin:0px 0px 5px;outline-color:invert;padding-right:0px;text-indent:2em;-webkit-tap-highlight-color:rgba(255, 0, 0, 0);">
    方法实现都一样,就是加了一个synchronized的关键字,
</p>
<p style="font-size:15px;word-wrap:break-word;border-top:0px;font-family:inherit;border-right:0px;vertical-align:baseline;border-bottom:0px;word-break:break-all;outline-width:0px;padding-bottom:0px;padding-top:0px;outline-style:none;padding-left:0px;border-left:0px;margin:0px 0px 5px;outline-color:invert;padding-right:0px;text-indent:2em;-webkit-tap-highlight-color:rgba(255, 0, 0, 0);">
    &nbsp;
</p>
<p style="font-size:15px;word-wrap:break-word;border-top:0px;font-family:inherit;border-right:0px;vertical-align:baseline;border-bottom:0px;word-break:break-all;outline-width:0px;padding-bottom:0px;padding-top:0px;outline-style:none;padding-left:0px;border-left:0px;margin:0px 0px 5px;outline-color:invert;padding-right:0px;text-indent:2em;-webkit-tap-highlight-color:rgba(255, 0, 0, 0);">
    <strong style="font-size:15px;border-top:0px;font-family:inherit;border-right:0px;vertical-align:baseline;border-bottom:0px;outline-width:0px;padding-bottom:0px;padding-top:0px;outline-style:none;padding-left:0px;border-left:0px;margin:0px;outline-color:invert;padding-right:0px;-webkit-tap-highlight-color:rgba(255, 0, 0, 0);">3、再来看看两个类 remove 方法</strong>
</p>
<p style="font-size:15px;word-wrap:break-word;border-top:0px;font-family:inherit;border-right:0px;vertical-align:baseline;border-bottom:0px;word-break:break-all;outline-width:0px;padding-bottom:0px;padding-top:0px;outline-style:none;padding-left:0px;border-left:0px;margin:0px 0px 5px;outline-color:invert;padding-right:0px;text-indent:2em;-webkit-tap-highlight-color:rgba(255, 0, 0, 0);">
    先看ArrayList的remove方法
</p>
<p style="font-size:15px;word-wrap:break-word;border-top:0px;font-family:inherit;border-right:0px;vertical-align:baseline;border-bottom:0px;word-break:break-all;outline-width:0px;padding-bottom:0px;padding-top:0px;outline-style:none;padding-left:0px;border-left:0px;margin:0px 0px 5px;outline-color:invert;padding-right:0px;text-indent:2em;-webkit-tap-highlight-color:rgba(255, 0, 0, 0);">
    <img class="size-full wp-image-6419 aligncenter" style="font-size:15px;max-width:100%;border-top:0px;height:auto;font-family:inherit;border-right:0px;vertical-align:middle;border-bottom:0px;outline-width:0px;padding-bottom:0px;padding-top:0px;outline-style:none;padding-left:0px;border-left:0px;margin:0px auto 10px;display:block;outline-color:invert;padding-right:0px;-webkit-tap-highlight-color:rgba(255, 0, 0, 0);" alt="Vector和Arraylist的区别" src="https://liuyanzhao.com/wp-content/uploads/2017/10/v5.png" width="600" height="217" sizes="(max-width: 600px) 100vw, 600px" srcset="https://liuyanzhao.com/wp-content/uploads/2017/10/v5.png 600w, https://liuyanzhao.com/wp-content/uploads/2017/10/v5-300x109.png 300w" data-original="https://liuyanzhao.com/wp-content/uploads/2017/10/v5.png" />
</p>
<p style="font-size:15px;word-wrap:break-word;border-top:0px;font-family:inherit;border-right:0px;vertical-align:baseline;border-bottom:0px;word-break:break-all;outline-width:0px;padding-bottom:0px;padding-top:0px;outline-style:none;padding-left:0px;border-left:0px;margin:0px 0px 5px;outline-color:invert;padding-right:0px;text-indent:2em;-webkit-tap-highlight-color:rgba(255, 0, 0, 0);">
    &nbsp;
</p>
<p style="font-size:15px;word-wrap:break-word;border-top:0px;font-family:inherit;border-right:0px;vertical-align:baseline;border-bottom:0px;word-break:break-all;outline-width:0px;padding-bottom:0px;padding-top:0px;outline-style:none;padding-left:0px;border-left:0px;margin:0px 0px 5px;outline-color:invert;padding-right:0px;text-indent:2em;-webkit-tap-highlight-color:rgba(255, 0, 0, 0);">
    再看Vector的remove方法
</p>
<p style="font-size:15px;word-wrap:break-word;border-top:0px;font-family:inherit;border-right:0px;vertical-align:baseline;border-bottom:0px;word-break:break-all;outline-width:0px;padding-bottom:0px;padding-top:0px;outline-style:none;padding-left:0px;border-left:0px;margin:0px 0px 5px;outline-color:invert;padding-right:0px;text-indent:2em;-webkit-tap-highlight-color:rgba(255, 0, 0, 0);">
    <img class="size-full wp-image-6420 aligncenter" style="font-size:15px;max-width:100%;border-top:0px;height:auto;font-family:inherit;border-right:0px;vertical-align:middle;border-bottom:0px;outline-width:0px;padding-bottom:0px;padding-top:0px;outline-style:none;padding-left:0px;border-left:0px;margin:0px auto 10px;display:block;outline-color:invert;padding-right:0px;-webkit-tap-highlight-color:rgba(255, 0, 0, 0);" alt="Vector和Arraylist的区别" src="https://liuyanzhao.com/wp-content/uploads/2017/10/v6.png" width="664" height="234" sizes="(max-width: 664px) 100vw, 664px" srcset="https://liuyanzhao.com/wp-content/uploads/2017/10/v6.png 664w, https://liuyanzhao.com/wp-content/uploads/2017/10/v6-300x106.png 300w" data-original="https://liuyanzhao.com/wp-content/uploads/2017/10/v6.png" />
</p>
<p style="font-size:15px;word-wrap:break-word;border-top:0px;font-family:inherit;border-right:0px;vertical-align:baseline;border-bottom:0px;word-break:break-all;outline-width:0px;padding-bottom:0px;padding-top:0px;outline-style:none;padding-left:0px;border-left:0px;margin:0px 0px 5px;outline-color:invert;padding-right:0px;text-indent:2em;-webkit-tap-highlight-color:rgba(255, 0, 0, 0);">
    方法实现上也一样,就是多了一个synchronized关键字
</p>
<p style="font-size:15px;word-wrap:break-word;border-top:0px;font-family:inherit;border-right:0px;vertical-align:baseline;border-bottom:0px;word-break:break-all;outline-width:0px;padding-bottom:0px;padding-top:0px;outline-style:none;padding-left:0px;border-left:0px;margin:0px 0px 5px;outline-color:invert;padding-right:0px;text-indent:2em;-webkit-tap-highlight-color:rgba(255, 0, 0, 0);">
    &nbsp;
</p>
<p style="font-size:15px;word-wrap:break-word;border-top:0px;font-family:inherit;border-right:0px;vertical-align:baseline;border-bottom:0px;word-break:break-all;outline-width:0px;padding-bottom:0px;padding-top:0px;outline-style:none;padding-left:0px;border-left:0px;margin:0px 0px 5px;outline-color:invert;padding-right:0px;text-indent:2em;-webkit-tap-highlight-color:rgba(255, 0, 0, 0);">
    <strong style="font-size:15px;border-top:0px;font-family:inherit;border-right:0px;vertical-align:baseline;border-bottom:0px;outline-width:0px;padding-bottom:0px;padding-top:0px;outline-style:none;padding-left:0px;border-left:0px;margin:0px;outline-color:invert;padding-right:0px;-webkit-tap-highlight-color:rgba(255, 0, 0, 0);">4、再看看两个类的get方法</strong>
</p>
<p style="font-size:15px;word-wrap:break-word;border-top:0px;font-family:inherit;border-right:0px;vertical-align:baseline;border-bottom:0px;word-break:break-all;outline-width:0px;padding-bottom:0px;padding-top:0px;outline-style:none;padding-left:0px;border-left:0px;margin:0px 0px 5px;outline-color:invert;padding-right:0px;text-indent:2em;-webkit-tap-highlight-color:rgba(255, 0, 0, 0);">
    ArrayList的get方法
</p>
<p style="font-size:15px;word-wrap:break-word;border-top:0px;font-family:inherit;border-right:0px;vertical-align:baseline;border-bottom:0px;word-break:break-all;outline-width:0px;padding-bottom:0px;padding-top:0px;outline-style:none;padding-left:0px;border-left:0px;margin:0px 0px 5px;outline-color:invert;padding-right:0px;text-indent:2em;-webkit-tap-highlight-color:rgba(255, 0, 0, 0);">
    <img class="size-full wp-image-6421 aligncenter" style="font-size:15px;max-width:100%;border-top:0px;height:auto;font-family:inherit;border-right:0px;vertical-align:middle;border-bottom:0px;outline-width:0px;padding-bottom:0px;padding-top:0px;outline-style:none;padding-left:0px;border-left:0px;margin:0px auto 10px;display:block;outline-color:invert;padding-right:0px;-webkit-tap-highlight-color:rgba(255, 0, 0, 0);" alt="Vector和Arraylist的区别" src="https://liuyanzhao.com/wp-content/uploads/2017/10/v8.png" width="600" height="90" sizes="(max-width: 600px) 100vw, 600px" srcset="https://liuyanzhao.com/wp-content/uploads/2017/10/v8.png 600w, https://liuyanzhao.com/wp-content/uploads/2017/10/v8-300x45.png 300w" data-original="https://liuyanzhao.com/wp-content/uploads/2017/10/v8.png" />
</p>
<p style="font-size:15px;word-wrap:break-word;border-top:0px;font-family:inherit;border-right:0px;vertical-align:baseline;border-bottom:0px;word-break:break-all;outline-width:0px;padding-bottom:0px;padding-top:0px;outline-style:none;padding-left:0px;border-left:0px;margin:0px 0px 5px;outline-color:invert;padding-right:0px;text-indent:2em;-webkit-tap-highlight-color:rgba(255, 0, 0, 0);">
    &nbsp;
</p>
<p style="font-size:15px;word-wrap:break-word;border-top:0px;font-family:inherit;border-right:0px;vertical-align:baseline;border-bottom:0px;word-break:break-all;outline-width:0px;padding-bottom:0px;padding-top:0px;outline-style:none;padding-left:0px;border-left:0px;margin:0px 0px 5px;outline-color:invert;padding-right:0px;text-indent:2em;-webkit-tap-highlight-color:rgba(255, 0, 0, 0);">
    Vector的get方法
</p>
<p style="font-size:15px;word-wrap:break-word;border-top:0px;font-family:inherit;border-right:0px;vertical-align:baseline;border-bottom:0px;word-break:break-all;outline-width:0px;padding-bottom:0px;padding-top:0px;outline-style:none;padding-left:0px;border-left:0px;margin:0px 0px 5px;outline-color:invert;padding-right:0px;text-indent:2em;-webkit-tap-highlight-color:rgba(255, 0, 0, 0);">
    <img class="size-full wp-image-6422 aligncenter" style="font-size:15px;max-width:100%;border-top:0px;height:auto;font-family:inherit;border-right:0px;vertical-align:middle;border-bottom:0px;outline-width:0px;padding-bottom:0px;padding-top:0px;outline-style:none;padding-left:0px;border-left:0px;margin:0px auto 10px;display:block;outline-color:invert;padding-right:0px;-webkit-tap-highlight-color:rgba(255, 0, 0, 0);" alt="Vector和Arraylist的区别" src="https://liuyanzhao.com/wp-content/uploads/2017/10/v9.png" width="600" height="105" sizes="(max-width: 600px) 100vw, 600px" srcset="https://liuyanzhao.com/wp-content/uploads/2017/10/v9.png 600w, https://liuyanzhao.com/wp-content/uploads/2017/10/v9-300x53.png 300w" data-original="https://liuyanzhao.com/wp-content/uploads/2017/10/v9.png" />
</p>
<p style="font-size:15px;word-wrap:break-word;border-top:0px;font-family:inherit;border-right:0px;vertical-align:baseline;border-bottom:0px;word-break:break-all;outline-width:0px;padding-bottom:0px;padding-top:0px;outline-style:none;padding-left:0px;border-left:0px;margin:0px 0px 5px;outline-color:invert;padding-right:0px;text-indent:2em;-webkit-tap-highlight-color:rgba(255, 0, 0, 0);">
    &nbsp;
</p>
<p style="font-size:15px;word-wrap:break-word;border-top:0px;font-family:inherit;border-right:0px;vertical-align:baseline;border-bottom:0px;word-break:break-all;outline-width:0px;padding-bottom:0px;padding-top:0px;outline-style:none;padding-left:0px;border-left:0px;margin:0px 0px 5px;outline-color:invert;padding-right:0px;text-indent:2em;-webkit-tap-highlight-color:rgba(255, 0, 0, 0);">
    <strong style="font-size:15px;border-top:0px;font-family:inherit;border-right:0px;vertical-align:baseline;border-bottom:0px;outline-width:0px;padding-bottom:0px;padding-top:0px;outline-style:none;padding-left:0px;border-left:0px;margin:0px;outline-color:invert;padding-right:0px;-webkit-tap-highlight-color:rgba(255, 0, 0, 0);">5、再看看Vector的其它方法</strong>
</p>
<p style="font-size:15px;word-wrap:break-word;border-top:0px;font-family:inherit;border-right:0px;vertical-align:baseline;border-bottom:0px;word-break:break-all;outline-width:0px;padding-bottom:0px;padding-top:0px;outline-style:none;padding-left:0px;border-left:0px;margin:0px 0px 5px;outline-color:invert;padding-right:0px;text-indent:2em;-webkit-tap-highlight-color:rgba(255, 0, 0, 0);">
    <img class="size-full wp-image-6423 aligncenter" style="font-size:15px;max-width:100%;border-top:0px;height:auto;font-family:inherit;border-right:0px;vertical-align:middle;border-bottom:0px;outline-width:0px;padding-bottom:0px;padding-top:0px;outline-style:none;padding-left:0px;border-left:0px;margin:0px auto 10px;display:block;outline-color:invert;padding-right:0px;-webkit-tap-highlight-color:rgba(255, 0, 0, 0);" alt="Vector和Arraylist的区别" src="https://liuyanzhao.com/wp-content/uploads/2017/10/v10.png" width="661" height="292" sizes="(max-width: 661px) 100vw, 661px" srcset="https://liuyanzhao.com/wp-content/uploads/2017/10/v10.png 661w, https://liuyanzhao.com/wp-content/uploads/2017/10/v10-300x133.png 300w" data-original="https://liuyanzhao.com/wp-content/uploads/2017/10/v10.png" />
</p>
<p style="font-size:15px;word-wrap:break-word;border-top:0px;font-family:inherit;border-right:0px;vertical-align:baseline;border-bottom:0px;word-break:break-all;outline-width:0px;padding-bottom:0px;padding-top:0px;outline-style:none;padding-left:0px;border-left:0px;margin:0px 0px 5px;outline-color:invert;padding-right:0px;text-indent:2em;-webkit-tap-highlight-color:rgba(255, 0, 0, 0);">
    &nbsp;
</p>
<p style="font-size:15px;word-wrap:break-word;border-top:0px;font-family:inherit;border-right:0px;vertical-align:baseline;border-bottom:0px;word-break:break-all;outline-width:0px;padding-bottom:0px;padding-top:0px;outline-style:none;padding-left:0px;border-left:0px;margin:0px 0px 5px;outline-color:invert;padding-right:0px;text-indent:2em;-webkit-tap-highlight-color:rgba(255, 0, 0, 0);">
    无一例外,<b style="font-size:15px;border-top:0px;font-family:inherit;border-right:0px;vertical-align:baseline;border-bottom:0px;outline-width:0px;padding-bottom:0px;padding-top:0px;outline-style:none;padding-left:0px;border-left:0px;margin:0px;outline-color:invert;padding-right:0px;-webkit-tap-highlight-color:rgba(255, 0, 0, 0);">只要是关键性的操作,方法前面都加了synchronized关键字,来保证线程的安全性</b>。当执行synchronized修饰的方法前,系统会对该方法加一把锁,方法执行完成后释放锁,<b style="font-size:15px;border-top:0px;font-family:inherit;border-right:0px;vertical-align:baseline;border-bottom:0px;outline-width:0px;padding-bottom:0px;padding-top:0px;outline-style:none;padding-left:0px;border-left:0px;margin:0px;outline-color:invert;padding-right:0px;-webkit-tap-highlight-color:rgba(255, 0, 0, 0);">加锁和释放锁的这个过程,在系统中是有开销的,因此,</b>在单线程的环境中,Vector效率要差很多。(多线程环境不允许用ArrayList,需要做处理)。
</p>
<p style="font-size:15px;word-wrap:break-word;border-top:0px;font-family:inherit;border-right:0px;vertical-align:baseline;border-bottom:0px;word-break:break-all;outline-width:0px;padding-bottom:0px;padding-top:0px;outline-style:none;padding-left:0px;border-left:0px;margin:0px 0px 5px;outline-color:invert;padding-right:0px;text-indent:2em;-webkit-tap-highlight-color:rgba(255, 0, 0, 0);">
    至于底层数组的扩容区别,这里就不带着大家读源码了,有兴趣的朋友大家自己读吧,底层代码几乎是一样的,不同的只是计算后的新数组长度不一致。
</p>
<p style="font-size:15px;word-wrap:break-word;border-top:0px;font-family:inherit;border-right:0px;vertical-align:baseline;border-bottom:0px;word-break:break-all;outline-width:0px;padding-bottom:0px;padding-top:0px;outline-style:none;padding-left:0px;border-left:0px;margin:0px 0px 5px;outline-color:invert;padding-right:0px;text-indent:2em;-webkit-tap-highlight-color:rgba(255, 0, 0, 0);">
    <b style="font-size:15px;border-top:0px;font-family:inherit;border-right:0px;vertical-align:baseline;border-bottom:0px;outline-width:0px;padding-bottom:0px;padding-top:0px;outline-style:none;padding-left:0px;border-left:0px;margin:0px;outline-color:invert;padding-right:0px;-webkit-tap-highlight-color:rgba(255, 0, 0, 0);">和ArrayList和Vector一样,同样的类似关系的类还有HashMap和HashTable,StringBuilder和StringBuffer,后者是前者线程安全版本的实现。</b>希望以后大家在面试过程中,能说出个因为所以,而不是一味的去背面试题,唯有理解,无需再背。
</p>
<p style="font-size:15px;word-wrap:break-word;border-top:0px;font-family:inherit;border-right:0px;vertical-align:baseline;border-bottom:0px;word-break:break-all;outline-width:0px;padding-bottom:0px;padding-top:0px;outline-style:none;padding-left:0px;border-left:0px;margin:0px 0px 5px;outline-color:invert;padding-right:0px;text-indent:2em;-webkit-tap-highlight-color:rgba(255, 0, 0, 0);">
    注:关于线程安全性,后续文章会说,这里只是简单说这两个类不一样的地方。
</p>



Vector和Arraylist的区别

最近上了 JSP 课程,其中有一个作业是实现一个简单的留言板,就是把留言内容加到 application 对象中。

部分代码如下

  1. <%! Vector v=new Vector();
  2.     int i=0;
  3.     ServletContext  application;
  4.     synchronized void leaveWord(String s) { //留言方法
  5.         application=getServletContext();
  6.         i++;
  7.         v.add("No."+i+","+s);
  8.         application.setAttribute("Mess",v);
  9.     }
  10. %>

瞪眼一看,Vector 是啥?为什么不用 ArrayList 。基础差是该的,应该补了。

然后百度查了一下,得知 Vector 是线程安全的,ArrayList 是不安全的(效率高)。


下面是 来自 清浅池塘 的一篇文章,该博主的文章都很不错。下面转载一下

前几篇文章我们重点说了ArrayLIst,是时候放出这张图了。


Vector和Arraylist的区别
-梦幻书涯 - 莫問前路遙遠- 與君風雪
-第1
张图片

这张图里的内容对我们学习Java来说,非常的重要,白色的部分是需要去了解的,黄色部分是我们要去重点了解的,不但要知道怎么去用,至少还需要读一次源码。绿色部分内容已经很少用了,但在面试题中有可能会问到,我们来看一个经常出现的面试题:Arraylist与Vector的区别是什么?

首先我们给出标准答案:

1、Vector是线程安全的,ArrayList不是线程安全的。

2、ArrayList在底层数组不够用时在原来的基础上扩展0.5倍,Vector是扩展1倍。

 

1、看上图Vector和ArrayList一样,都继承自List,来看一下Vector的源码


Vector和Arraylist的区别
-梦幻书涯 - 莫問前路遙遠- 與君風雪
-第2
张图片

实现了List接口,底层和ArrayList一样,都是数组来实现的。

 

2、分别看一下这两个类的add方法

首先来看ArrayList的add源码


Vector和Arraylist的区别
-梦幻书涯 - 莫問前路遙遠- 與君風雪
-第3
张图片

 

再看Vector的add源码


Vector和Arraylist的区别
-梦幻书涯 - 莫問前路遙遠- 與君風雪
-第4
张图片

方法实现都一样,就是加了一个synchronized的关键字,

 

3、再来看看两个类 remove 方法

先看ArrayList的remove方法


Vector和Arraylist的区别
-梦幻书涯 - 莫問前路遙遠- 與君風雪
-第5
张图片

 

再看Vector的remove方法


Vector和Arraylist的区别
-梦幻书涯 - 莫問前路遙遠- 與君風雪
-第6
张图片

方法实现上也一样,就是多了一个synchronized关键字

 

4、再看看两个类的get方法

ArrayList的get方法


Vector和Arraylist的区别
-梦幻书涯 - 莫問前路遙遠- 與君風雪
-第7
张图片

 

Vector的get方法


Vector和Arraylist的区别
-梦幻书涯 - 莫問前路遙遠- 與君風雪
-第8
张图片

 

5、再看看Vector的其它方法


Vector和Arraylist的区别
-梦幻书涯 - 莫問前路遙遠- 與君風雪
-第9
张图片

 

无一例外,只要是关键性的操作,方法前面都加了synchronized关键字,来保证线程的安全性。当执行synchronized修饰的方法前,系统会对该方法加一把锁,方法执行完成后释放锁,加锁和释放锁的这个过程,在系统中是有开销的,因此,在单线程的环境中,Vector效率要差很多。(多线程环境不允许用ArrayList,需要做处理)。

至于底层数组的扩容区别,这里就不带着大家读源码了,有兴趣的朋友大家自己读吧,底层代码几乎是一样的,不同的只是计算后的新数组长度不一致。

和ArrayList和Vector一样,同样的类似关系的类还有HashMap和HashTable,StringBuilder和StringBuffer,后者是前者线程安全版本的实现。希望以后大家在面试过程中,能说出个因为所以,而不是一味的去背面试题,唯有理解,无需再背。

注:关于线程安全性,后续文章会说,这里只是简单说这两个类不一样的地方。

版权说明
文章采用: 《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权。
版权声明:未标注转载均为本站原创,转载时请以链接形式注明文章出处。如有侵权、不妥之处,请联系站长删除。敬请谅解!

这篇文章最后更新于2019-6-8,已超过 1 年没有更新,如果文章内容或图片资源失效,请留言反馈,我们会及时处理,谢谢!
buffered高效字节流VS 基本字节流速度
« 上一篇
extends和implements区别
下一篇 »

相关推荐

发表评论

HI ! 请登录
注册会员,享受下载全站资源特权。
Array

日历

最新评论

热门文章