Collections 二分法查找問題

package com.ebizserve.tarket.service.command;

 

import java.util.ArrayList;

import java.util.Collections;

import java.util.HashSet;

import java.util.Iterator;

import java.util.List;

import java.util.Set;

 

import org.apache.log4j.Logger;

 

public class Test {

 

    private static Logger logger = Logger.getLogger(Test.class);

 

    public static void main(String[] args) {

 

       int index;

 

       Set<Float> set = new HashSet<Float>();

       List<Float> list = new ArrayList<Float>();

 

       set.add(68.1f);

       set.add(68.0f);

       set.add(68.3f);

       set.add(68.2f);

 

       for (Iterator it = set.iterator(); it.hasNext();) {

           list.add((Float) it.next());

       }

 

       // Collections.sort()方法用於自然排序List對象;

       Collections.sort(list);

       for (Float l : list) {

           logger.info("自然排序:" + l);

       }

 

       logger.info("-------------------------------------");

 

       // Collections.reverse()方法用於倒轉排序List對象;

       Collections.reverse(list);

       for (Float l : list) {

           logger.info("倒轉排序:" + l);

       }

 

       // Collections.binarySearch()方法檢索對象所在位置;

        int k = Collections.binarySearch(list, new Float(68.0));

 

       // list.indexOf()方法檢索對象所以位置;

       // int k = list.indexOf(68.0f);

 

       logger.info("k---------" + k);

 

       index = k + 1;

       logger.info("index---------" + index);

    }

}

 

Collections.binarySearch()方法查找的索引位置不正確,後改爲用List.indexOf()方法;請同志們分析下。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章