您的位置:首页 > 其它

Collections 二分法查找问题

2008-02-22 11:28 363 查看
[align=left]package com.ebizserve.tarket.service.command;[/align]
[align=left] [/align]
[align=left]import java.util.ArrayList;[/align]
[align=left]import java.util.Collections;[/align]
[align=left]import java.util.HashSet;[/align]
[align=left]import java.util.Iterator;[/align]
[align=left]import java.util.List;[/align]
[align=left]import java.util.Set;[/align]
[align=left] [/align]
[align=left]import org.apache.log4j.Logger;[/align]
[align=left] [/align]
[align=left]public class Test {[/align]
[align=left] [/align]
[align=left] private static Logger logger = Logger.getLogger(Test.class);[/align]
[align=left] [/align]
[align=left] public static void main(String[] args) {[/align]
[align=left] [/align]
[align=left] int index;[/align]
[align=left] [/align]
[align=left] Set<Float> set = new HashSet<Float>();[/align]
[align=left] List<Float> list = new ArrayList<Float>();[/align]
[align=left] [/align]
[align=left] set.add(68.1f);[/align]
[align=left] set.add(68.0f);[/align]
[align=left] set.add(68.3f);[/align]
[align=left] set.add(68.2f);[/align]
[align=left] [/align]
[align=left] for (Iterator it = set.iterator(); it.hasNext();) {[/align]
[align=left] list.add((Float) it.next());[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] // Collections.sort()方法用于自然排序List对象;[/align]
[align=left] Collections.sort(list);[/align]
[align=left] for (Float l : list) {[/align]
[align=left] logger.info("自然排序:" + l);[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] logger.info("-------------------------------------");[/align]
[align=left] [/align]
[align=left] // Collections.reverse()方法用于倒转排序List对象;[/align]
[align=left] Collections.reverse(list);[/align]
[align=left] for (Float l : list) {[/align]
[align=left] logger.info("倒转排序:" + l);[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] // Collections.binarySearch()方法检索对象所在位置;[/align]
int k = Collections.binarySearch(list,
new Float(68.0));
[align=left] [/align]
[align=left] // list.indexOf()方法检索对象所以位置;[/align]
[align=left] // int k = list.indexOf(68.0f);[/align]
[align=left] [/align]
[align=left] logger.info("k---------" + k);[/align]
[align=left] [/align]
[align=left] index = k + 1;[/align]
[align=left] logger.info("index---------" + index);[/align]
[align=left] }[/align]
[align=left]}[/align]
Collections.binarySearch()方法查找的索引位置不正确,后改为用List.indexOf()方法;请同志们分析下。本文出自 “霜之哀伤” 博客,请务必保留此出处http://maomao.blog.51cto.com/115985/62741
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: