`
eyes_on_you
  • 浏览: 21414 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

最快遍历List

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

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

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

public int indexOf(Object o) {
	if (o == null) {
	    for (int i = 0; i < size; i++)
		if (elementData[i]==null)
		    return i;
	} else {
	    for (int i = 0; i < size; i++)
		if (o.equals(elementData[i]))
		    return i;
	}
	return -1;
    }
 
 
所以模仿源码,应该是最快的:
package littlejava;

import java.util.ArrayList;
import java.util.List;

public class ListIter 
{
	public static void main(String []args)
	{
		List<String>list = new ArrayList<String>();
		list.add("aa");
		list.add("bb");
		list.add("cc");
		list.add("dd");
		list.add("ee");
		int index=indexof(list,"cc");
		System.out.println(index);
	}
	
	/*
	 * 最快的方法的遍历
	 */
	public static int indexof(List list,String key)
	{
		Object [] strArray=list.toArray();
		
		int size = strArray.length;
		if(key==null)
		{
			for(int i=0;i<size;i++)
			{
				if(strArray[i]==null)
				{
					return i;
				}
			}
		}
		else
		{
			for(int i=0;i<size;i++)
			{
				if(key.equals(strArray[i]))
				{
					return i;
				}
			}
		}
		return -1;//没有这个key
	}
}
 

 

分享到:
评论

相关推荐

    C# 集合对象遍历性能测试

    遍历List的时间复杂度与ArrayList相同,都是O(n),但由于类型安全,List通常被视为更优的选择。 最后,`DataSet`是.NET中用于存储和操作关系数据的复杂对象,它包含了多个DataTable。DataSet设计用于处理大量数据库...

    Java中List集合的遍历实例详解

    最传统的方式是通过索引来遍历List集合,这种方式适用于需要访问元素索引的情况: ```java for (int i = 0; i &lt; list.size(); i++) { String data = list.get(i); // 处理data } ``` 索引遍历不会锁定数据,...

    java-遍历map

    private String listToJSON(Map, String&gt; uploadFileMap) { JSONObject json = new JSONObject(); Iterator, String&gt;&gt; fileItr = uploadFileMap.entrySet().iterator(); Map.Entry, String&gt; fileInfo = null; ...

    Java文件遍历以及树的三种非递归遍历, 前后序编码

    如果需要递归遍历所有子目录,可以嵌套调用`listFiles()`方法。 接下来,我们转向树的遍历。在数据结构中,树是一种非常重要的非线性结构,广泛用于表示层次关系。通常,树的遍历有三种基本方式:前序遍历、中序...

    Java list三种遍历方法性能比较

    在Java编程中,遍历List接口实现类(如ArrayList)有三种常见的方法:增强型for循环、普通for循环以及使用Iterator。本篇文章将详细探讨这三种遍历方式,并基于给出的测试代码分析它们的性能差异。 1. **增强型for...

    VB 代码遍历文件夹所有文件,速度超快

    为了确保遍历文件夹的速度尽可能快,可以采取以下几种策略: - **缓存结果**:对于经常访问的文件或文件夹,可以考虑缓存其信息,避免重复读取。 - **异步处理**:使用多线程或异步I/O操作可以显著提升处理速度,...

    Python中遍历列表的方法总结

    Python中遍历列表有以下几种方法: 一、for循环遍历 lists = [m1, 1900, m2, 2000] for item in lists: print(item) lists = [m1, 1900, m2, 2000] for item in lists: item = 0; print(lists) 运行结果: ['m1',...

    java中List集合及其遍历详解

    1. ArrayList:这是最常用的List实现,底层基于数组实现。由于其内部使用数组,查询速度快,因为可以通过索引直接访问。但是,由于数组的特性,当需要在中间插入或删除元素时,需要移动大量元素,因此增删操作相对较...

    struts2遍历集合

    `s:iterator`标签是Struts2中最常用的遍历集合的标签。它的主要属性包括: - **value**:指定要遍历的集合,可以是数组、列表或Map类型的对象。 - **id**:为每个遍历元素设置一个临时变量名。 - **status**:提供...

    Struts2中ognl遍历数组,list和map方法详解

    Struts2中OGNL遍历数组、List和Map方法详解 Struts2框架中,OGNL(Object-Graph Navigation Language)是一种强大的表达式语言,用于在Web应用程序中访问和操作对象。其中,OGNL遍历数组、List和Map是常见的操作,...

    Iterating through List Containers关于List容器的话题(5KB)

    遍历List容器是编程中非常基础且重要的技能,因为这涉及到对数据的访问和处理。以下是一些核心知识点: 1. **迭代器(Iterator)**:迭代器是C++ STL(Standard Template Library)中的一个关键概念,它提供了一种...

    java程序——遍历目录文件

    `main`函数负责初始化,设置目录路径和创建`FileWriter`对象,然后调用`listFiles`方法开始遍历。`listFiles`函数接受一个目录和一个`FileWriter`对象,对于每个文件,它会获取并写入文件的基本信息;对于每个子目录...

    java 中如何从LIST 对象取值

    #### 2.2 遍历List 除了使用`get()`方法之外,我们还可以使用迭代器(`Iterator`)或增强型`for`循环(也称为“foreach”循环)来遍历`List`中的元素。这两种方法都避免了直接使用索引,这可以减少潜在的数组越界...

    Android如何遍历特定目录下所有文件

    总结起来,遍历Android设备上的特定目录下的所有文件主要依赖于`java.io.File`类提供的`listFiles()`方法。通过递归或非递归方式,我们可以获取目录及其子目录下的所有文件。在实际应用中,应根据需求选择合适的方法...

    两个list比较 取不同的对象

    ### 两个List比较取不同的对象 在Java编程中,经常需要对两个`List`进行比较,找出它们之间的差异。这通常涉及到数据结构的理解、算法设计以及编程实现等多个方面。本文将详细探讨如何通过一个示例代码来理解如何...

    Java 实例 - 集合遍历源代码-详细教程.zip

    本详细教程将重点介绍如何遍历Java中的各种集合,包括ArrayList、LinkedList、HashSet、HashMap等。我们将通过源代码实例来深入理解这些集合的遍历方法。 首先,我们来看看ArrayList的遍历。ArrayList是一个基于...

    JSON--List集合转换成JSON对象详解

    文中通过遍历List集合中的每个元素,手动创建JSONObject并填充数据,最后将JSONObject添加到JSONArray中。这是一种基础且灵活的转换方式。 2. 使用第三方库进行转换: 在上述代码中,使用了org.json库中的...

    C#如何遍历Dictionary

    在C#中,最常用且直观的方法是使用foreach循环遍历`Dictionary`。这将遍历`Dictionary`中的每个`KeyValuePair, TValue&gt;`实例。在给定的代码示例中,`IteratorDictionary`方法就展示了这种方式: ```csharp ...

    kernel的list.h(分享)

    在`list.h`中最基础的数据结构是`struct list_head`: ```c struct list_head { struct list_head *next, *prev; }; ``` 这个结构体非常简洁,仅包含两个指针成员`next`和`prev`,分别指向下一个节点和前一个节点。...

Global site tag (gtag.js) - Google Analytics