最快的方法从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")
解决方案三:
我觉得很简单啊, list.get(2)
解决方案四:
list.indexOf("dd")
解决方案五:
直接二分,一般的数据是从数据库取出来的,你可以再取出来得时候就order by 下,要是不是数据库取出来的数据,我就不知道除了上面答案的好方法了!
解决方案六:
我前几天看过一些资料,知道遍历list的最快的方式是: Object o[]; o = list.toArray(); for (Object element : o) { String str = (String) element; }反正都是遍历何不找个遍历最快的方式: Object o[]; o = list.toArray(); for (Object element : o) { String str = (String) element; if(str.equals("cc")){} }
解决方案七:
如果list中,有重复值的话,用HashMap可能不对
解决方案八:
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; }
解决方案:
list .get(list.indexOf("cc") )
解决方案:
引用indexOf("cc");indexOf("cc"); String类中的方法HashMap键值对应该是最快的。
解决方案:
用hashmap吧,set的话还是需要遍历,不适合这种取值的场景。假如同样size,hashmap还是要快一些的。
解决方案:
如你所诉 二分查找快
解决方案:
indexOf
解决方案:
List只能是循环,一个个比较了。List.remove("cc")可以删除cc。要快速,改用Set,他是直接命中的,不用一个个比较。

时间: 2024-09-20 11:50:17

最快的方法从list中取指定的值的相关文章

asp.net关于根据gridview中取到的值从数据库中读取image类型的图片信息并显示

问题描述 asp.net关于根据gridview中取到的值从数据库中读取image类型的图片信息并显示 前台代码 <asp:GridView ID=""GridView1"" runat=""server"" AutoGenerateColumns=""False"" GridLines=""Vertical"" OnRowCommand=&

datatable中取值问题-C#中,datatable中取某个元素值的问题,

问题描述 C#中,datatable中取某个元素值的问题, 解决方案 那么你到底是遇到什么问题呢?

javascript的原生方法获取数组中的最大(最小)值_基础知识

获取一个数组中的最大(最小)值的最简单的方法,就是对数组进行一次遍历,通过比较,找到其最大(最小)值.但是其实在javascript的原生方法中,已经提供了一些快捷方法,可以实现此功能. 1 Array.prototype.sort 复制代码 代码如下: var a = [7,3,4,6,10]; a.sort(function(a,b){ return (a-b);}) 注意,sort里的比较函数是一定要传入的,如果不传此函数的话,a.sort()的结果是[10,3,4,6,7]; 2 Mat

html 标签自定义属性,怎么在提交到的servlet后台代码中取到自定义属性值

问题描述 功能介绍:动态生成了很多考核项,用户填写考核得分后,不光要将得分传到后台,还有标签自定义属性itemid也要传到后台,现在不知道这个自定义的属性在后台dopost里怎么获取到.前台表单如下:<formaction="/Servlet/LoginServlet"method="post"><divclass="w_zw"><%ListassessItemList=(List)request.getAttrib

求一个正则表达式 替换json字符串中的指定键值对

问题描述 {"name":"zhangsan","id":1042732,"type":"2","status":0,"password":"123456789"}如何把其中的type 键值替换成空 我需要一个{"name":"zhangsan","id":1042732,"st

javascript中取前n天日期的两种方法分享

 这篇文章主要介绍了javascript中取前n天日期的两种方法,有需要的朋友可以参考一下 方法一:   代码如下: var d = new Date();   d = new Date(d.getFullYear(),d.getMonth(),d.getDate()-n);         方法二:    代码如下: var now = new Date();   now.setTime(now.getTime()-n*24*60*60*1000);  

一个标签从标签数组中取值方法实现

问题描述 一个标签从标签数组中取值的两种方法实现.一种方法是按标签出次的次数取值按出现.String[]add={"北京","上海","四川","四川","北京","四川"};"地址":"四川";还有一个方法是按权重进行显示String[]add={"北京","上海","四川","

JS中取二维数组中最大值的方法汇总_javascript技巧

在JavaScript中可以通过内置的 Math.max() 的最大值,但是要从多重数组中取出最大值,还是有一定的难度. 问题描述 假设你有一个数组,而且这个数组中包含了数字的子数组,而我们要做的是从数组中的每个子数组中返回其最大的那个最大数. 基本解决方案 function largestOfFour(arr) { var results = []; // 创建一个results变量来存储 // 创建一个外层循环,遍历外层数组 for (var n = 0; n < arr.length; n

.NET中TextBox控件设置ReadOnly=true后台取不到值三种解决方法_实用技巧

当TextBox设置了ReadOnly="true" 后,要是在前台为控件添加了值,后台是取不到的,值为"空" 原理没想通,说不清楚微软是出于什么考虑的,不过有时是要我们能通过前台脚本来填充值,并不希望用户修改其控件内容,这时就比较尴尬了. 刚开始是换成Html 里的 <input type="text" readonly="readonly" > ,不过后来发现这个工作量是很大的, 所以网上搜了下,没找出Text