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
[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
相关文章推荐
- Collections 二分法查找问题
- 算法导论2.3-5二分法查找问题
- 二分法查找问题
- 二分法查找和快速排序 二分法是分治算法的一种特殊形式,利用分治策略求解时,所需时间取决于分解后子问题的个数、子问题的规模大小等因素,而二分法,由于其划分的简单和均匀的特点,是查找数据时经常采用的一种有
- 二分法查找的边界问题
- day17集合框架的工具类Collections。二分法查找原理 。操作数组的工具类Arrays,集合变数组。高级for循环。可变参数
- 03-1. 二分法求多项式单根(PAT) - 二分查找问题
- 遍历和二分法求解二维数组中查找问题
- java算法问题-二分法查找
- 二维数组, 二分法查找数组元素下标 快速查找数组最大值 数组作为实参的问题
- 系统特别慢问题查找
- mysql的模糊查找是否走索引问题
- 有关《查找两个List中的不同元素》的问题解答与编程实践
- 关于sqlite3的C接口中的sql语句的查找关键字需要带上引号的问题
- 连通性问题快速查找算法
- Collections Programming Topics---集合的编程问题
- 二分法——查找、排序以及库函数bsearch的用法
- 二分法查找
- Python多线程问题的资料查找与汇总by tsy
- 进程段错误问题查找