Collections.binarySearch用法

原创 2016年08月31日 12:30:51

项目中的一个需求,APP留言列表需要锚点功能,点击留言要跳转到留言列表的具体位置,Collections工具类提供了二分法查找的实现

public class DirectGoodMessageVo extends JrdsGoodMessage implements Serializable,Comparable<DirectGoodMessageVo>{

    private Boolean sex;

    private String smallIcon;

    private String bigIcon;

    private String listType;

    private Integer start;

    private Integer end;

    private Long stationMessageId;

    public Long getStationMessageId() {
        return stationMessageId;
    }

    public void setStationMessageId(Long stationMessageId) {
        this.stationMessageId = stationMessageId;
    }

    public Integer getStart() {
        return start;
    }

    public void setStart(Integer start) {
        this.start = start;
    }

    public Integer getEnd() {
        return end;
    }

    public void setEnd(Integer end) {
        this.end = end;
    }

    public String getListType() {
        return listType;
    }

    public void setListType(String listType) {
        this.listType = listType;
    }

    public String getSmallIcon() {
        return smallIcon;
    }

    public void setSmallIcon(String smallIcon) {
        this.smallIcon = smallIcon;
    }

    public String getBigIcon() {
        return bigIcon;
    }

    public void setBigIcon(String bigIcon) {
        this.bigIcon = bigIcon;
    }

    public Boolean getSex() {
        return sex;
    }

    public void setSex(Boolean sex) {
        this.sex = sex;
    }

    /**
     * 序列化
     */
    private static final long serialVersionUID = -629484448752499648L;
    **//实现比较规则**
    public int compareTo(DirectGoodMessageVo o) {
        Long diff = this.getCreated().getTime() - o.getCreated().getTime();
        if(diff > 0)return -1;
        else if(diff < 0) return 1;
        else return 0;
    }
}
//查询对象所在的集合msgList 
List<DirectGoodMessageVo> msgList = directGoodMessageService.getDirectGoodMessageList(directGoodMessageVo);
//要查的对象
DirectGoodMessageVo message = directGoodMessageService.getMessageById(messageId);
            List<Map<String, Object>> resultList = new ArrayList<Map<String, Object>>();
            for (DirectGoodMessageVo dvo : msgList) {
                Map<String, Object> map = new HashMap<String, Object>();
                if (dvo.getInitiator() != null) {
                    map.put("msgFromUserName", dvo.getInitiator());
                }
                if (dvo.getReplyor() != null) {
                    map.put("msgToUserName", dvo.getReplyor());
                }
                if (dvo.getInitiatorId() != null) {
                    map.put("msgFromUserID", dvo.getInitiatorId());
                }
                if (dvo.getReplyorId() != null) {
                    map.put("msgToUserID", dvo.getReplyorId());
                }
                if (dvo.getMessage() != null) {
                    map.put("msgContent", dvo.getMessage());
                }
                if (dvo.getCreated() != null) {
                    map.put("msgTime", HandlerUtil.getShowTime(dvo.getCreated()));
                }
                map.put("icon", Commons.PIC_DOMAIN + dvo.getSmallIcon());
                if(userId != null)
                map.put("isMine", userId.equals(dvo.getInitiatorId()));
                map.put("msgID", dvo.getId());
                map.put("source", dvo.getSource());
                resultList.add(map);
            }
            //锚点下标
            int index = Collections.binarySearch(msgList, message);
            //返回锚点 
            responseBody.setAnchor(index + 1);

Spring的事物分析(1):统一的事物接口

1 Spring事务操作接口    在spring的事务管理中主要涉及到下面的三个接口 a)PlatformTransactionManager抽取了事务管理过程中的整个流程最顶层的操作接...
  • wanghang88
  • wanghang88
  • 2016年08月14日 01:00
  • 335

Arrays.binarySearch用法

int[] a = new int[]{128,129};        int pos = Arrays.binarySearch(a,128);        System.out.println...
  • jhl8105
  • jhl8105
  • 2014年07月29日 11:59
  • 2376

Java基础之集合框架--Collections.binarySearch()

package newFeatures8; import java.util.ArrayList; import java.util.Arrays; import java.util.Collect...
  • ljh_learn_from_base
  • ljh_learn_from_base
  • 2017年09月16日 21:41
  • 533

关于binarySearch返回值为负数

import java.util.*; public class Test { public static void main(String[] args) { String[] colors ...
  • smmzhaone
  • smmzhaone
  • 2014年08月29日 20:38
  • 1460

代理模式深入学习(二)——实现动态代理对事务的封装

前两篇博客已经为这篇博客做了很多铺垫,从动态代理的实现衍生原理到threadLocal来封装事务,到最后真正的利用动态代理来封装事务。缺少每一 步都似乎显得有些冒进了!现在剩下的就只是把先前封...
  • wangyy130
  • wangyy130
  • 2015年10月18日 16:37
  • 903

easyui中datagrid不加载问题

今日遇到一个奇怪问题,datagrid就是不加载,debug看了一下,触发对象貌似不正常。使用jquery或者dom去查找元素都找不到,但是easyui也不报undifined异常,很是奇怪。 ...
  • shandalue
  • shandalue
  • 2016年01月05日 09:49
  • 1703

简单概述Collections.binarySearch()

public static int binarySearch(List> list, T key) 此方法传入一个实现了Comparable接口的对象类的列表和要查找的元素。使用二分搜索法搜索...
  • agony_sun
  • agony_sun
  • 2017年08月23日 11:52
  • 65

Collections.sort方法实现Comparator比较器进行二分查找

/*Collections.sort方法实现Comparator比较器 Collections 工具类 */ import java.util.*; class CollectionsDemo { ...
  • blacop
  • blacop
  • 2016年07月18日 09:47
  • 652

spring事务原理

之前面试被问spring事务原理,只能回答出AOP和动态代理实现的。然而要再详细点的时候就不知道说什么了,网上找了半天也没找到个具体详细的回答,然后去看了spring源码解析的书,总算是找到点眉目。 ...
  • jshaxxl
  • jshaxxl
  • 2017年03月15日 15:27
  • 591

binarySearch()方法详解 java

再看TIJ 的时候书中提到   未排序的数组使用binaryserach会产生很严重错误    一直想不通后来在网上了一下得到一下结果 binarySearch()方法提供了多种重载形式,用于满足...
  • songlang90
  • songlang90
  • 2015年07月12日 10:26
  • 5972
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Collections.binarySearch用法
举报原因:
原因补充:

(最多只允许输入30个字)