隨筆-61  評論-159  文章-0  trackbacks-0
                  最近重構項目里面的一個功能,其中用到Vector容器,有一種情況是Vector里面含有相同的元素,造成得到的結果不是預期的,所以要去掉Vector里面的重復的元素。
                  通過查看jdk文檔,得知有個contains()方法,如果此向量包含指定的元素,則返回 true。更確切地講,當且僅當此向量至少包含一個滿足 (o==null ? e==null : o.equals(e)) 的元素 e 時,返回 true
                  JDK原文:

          contains

          public boolean contains(Object elem)
          Tests if the specified object is a component in this vector.

           

          Specified by:
          contains in interface Collection<E>
          Specified by:
          contains in interface List<E>
          Overrides:
          contains in class AbstractCollection<E>
          Parameters:
          elem - an object.
          Returns:
          true if and only if the specified object is the same as a component in this vector, as determined by the equals method; false otherwise.
           
          因此:可以通過該方法來實現過濾重復的元素。

          contains方法JDK源碼:

           

          1public boolean contains(Object elem) {
          2    return indexOf(elem, 0>= 0;
          3    }

           

           1public synchronized int indexOf(Object elem, int index) {
           2    if (elem == null{
           3        for (int i = index ; i < elementCount ; i++)
           4        if (elementData[i]==null)
           5            return i;
           6    }
           else {
           7        for (int i = index ; i < elementCount ; i++)
           8        if (elem.equals(elementData[i]))
           9            return i;
          10    }

          11    return -1;
          12    }

          注:contains方法里面返回的indexOf(Object elem, int index)方法,十分重要。

          測試例子:

           1package org.apple.collection.test;
           2
           3import java.util.Vector;
           4
           5public class VectorTest {
           6
           7    /**
           8     * @param args
           9     */

          10    public static void main(String[] args) {
          11        // TODO Auto-generated method stub
          12        Vector<String> v = new Vector<String>();
          13        Vector<String> o = new Vector<String>();
          14        v.add("aaaaa");
          15        v.add("bbbbb");
          16        v.add("aaaaa");
          17        v.add("ccccc");
          18        for(int i=0;i<v.size();i++)
          19        {
          20        if(!o.contains(v.get(i)))
          21            o.add(v.get(i));
          22        }

          23        for(int j = 0;j<o.size();j++)
          24        {
          25            System.out.println(o.get(j));
          26        }

          27
          28    }

          29
          30}

          31

          輸出結果aaaaa bbbbb  ccccc

          PS:所以通過contains方法可以把重復元素過濾掉。

           




          -------------------------------------------------------------------------------------------------
          PS:本博客文章,如果沒有注明是有“轉”字樣,屬于本人原創。如果需要轉載,務必注明作者文章的詳細出處地址,否則不允許轉載,多謝合作!
          posted on 2008-11-04 23:48 apple0668 閱讀(3982) 評論(0)  編輯  收藏 所屬分類: java
          Email:chensp1230@163.com
          歡迎交流
          框架是告訴人們不該去做什么,而不是告訴人們該去做什么;容器是告訴人們該去做什么,而不是告訴人們不該去做什么!
          <2008年11月>
          2627282930311
          2345678
          9101112131415
          16171819202122
          23242526272829
          30123456

          留言簿(10)

          我參與的團隊

          隨筆分類(63)

          隨筆檔案(61)

          友情鏈接

          開源在線手冊

          最新隨筆

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 兴国县| 丹阳市| 泽州县| 桂平市| 阳山县| 浙江省| 博乐市| 滁州市| 定安县| 伽师县| 宁德市| 洛扎县| 井冈山市| 旬阳县| 车险| 晋江市| 泉州市| 乌兰浩特市| 通海县| 沙洋县| 峡江县| 海林市| 浑源县| 大化| 台江县| 田东县| 彭泽县| 福海县| 香格里拉县| 和平县| 灌云县| 拉孜县| 林口县| 岑溪市| 台中市| 无棣县| 钟山县| 区。| 津南区| 齐齐哈尔市| 许昌市|