Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2857151
  • 博文数量: 471
  • 博客积分: 7081
  • 博客等级: 少将
  • 技术积分: 5369
  • 用 户 组: 普通用户
  • 注册时间: 2012-01-04 21:55
文章分类

全部博文(471)

文章存档

2014年(90)

2013年(69)

2012年(312)

分类: Java

2012-06-28 11:42:00

List list = new ArrayList();
list.add("aa");
list.add("bb");
list.add("cc");
list.add("dd");
.
.
假设我不知道list中各个值的下标,在这种情况下用最快的方法,取出“cc”。

ArrayList是一个顺序存储的数据结构,只能顺序存储吧,查询数据也就只能用顺序遍历。。。。
如果是已经排序的,那么二分查找是可以的,没排序的话顺序遍历吧 一般吧 要想快,用HashMap或者HashSet之类的

indexOf("cc")还不是遍历整个线性表,源码是

点击(此处)折叠或打开

  1. public int indexOf(Object o) {
  2.     if (o == null) {
  3.      for (int i = 0; i < size; i++)
  4.         if (elementData[i]==null)
  5.          return i;
  6.     } else {
  7.      for (int i = 0; i < size; i++)
  8.         if (o.equals(elementData[i]))
  9.          return i;
  10.     }
  11.     return -1;
  12.     }
所以模仿源码,应该是最快的:

点击(此处)折叠或打开

  1. package littlejava;

  2. import java.util.ArrayList;
  3. import java.util.List;

  4. public class ListIter
  5. {
  6.     public static void main(String []args)
  7.     {
  8.         Listlist = new ArrayList();
  9.         list.add("aa");
  10.         list.add("bb");
  11.         list.add("cc");
  12.         list.add("dd");
  13.         list.add("ee");
  14.         int index=indexof(list,"cc");
  15.         System.out.println(index);
  16.     }
  17.     
  18.     /*
  19.      * 最快的方法的遍历
  20.      */
  21.     public static int indexof(List list,String key)
  22.     {
  23.         Object [] strArray=list.toArray();
  24.         
  25.         int size = strArray.length;
  26.         if(key==null)
  27.         {
  28.             for(int i=0;i
  29.             {
  30.                 if(strArray[i]==null)
  31.                 {
  32.                     return i;
  33.                 }
  34.             }
  35.         }
  36.         else
  37.         {
  38.             for(int i=0;i
  39.             {
  40.                 if(key.equals(strArray[i]))
  41.                 {
  42.                     return i;
  43.                 }
  44.             }
  45.         }
  46.         return -1;//没有这个key
  47.     }
  48. }

阅读(5570) | 评论(0) | 转发(0) |
0

上一篇:数据库索引

下一篇:mysql创建函数

给主人留下些什么吧!~~