gamecenter有用代码(二)

1、Map转换为list
/**
     * 将展示结构的Map封装为List<AppPage>
     * 
     * @param map
     * @return List<AppPage>
     */
    protected List<AppPage> wrapAppPageList(Map<Integer, List<Integer>> friendsPlayMap) {
        if (MapUtils.isEmpty(friendsPlayMap)) {
            return null;
        }
        Integer[] appPageIds = friendsPlayMap.keySet().toArray(new Integer[friendsPlayMap.size()]);
        List<Integer> appPageIdList = convertToIntegerList(appPageIds);
        List<AppPage> appPageList = getAppPagesByPageIds(appPageIdList);
        if (CollectionUtils.isNotEmpty(appPageList)) {
            for (AppPage appPage : appPageList) {
                List<Integer> friendIds = friendsPlayMap.get(appPage.getId());
                if (friendIds != null) {
                    //将好友List转换为字符串
                    appPage.setFriends(StringUtils.join(friendIds, ","));
                }
            }
        }
        return appPageList;
    }


2、iterator循环过滤
for (Iterator<AppPage> iterator = appPages.iterator(); iterator.hasNext();) {
            AppPage appPage = iterator.next();
            List<AppPageSupport> pageSupports = appPage.getAppPageSupports();
            if (pageSupports != null) {
                boolean match = false;
                // 如果是下载类的page,需要判断os是否支持
                if (appPage.getType() == AppPageConstant.APP_PAGE_TYPE_DOWNLOAD) {
                    for (AppPageSupport pageSupport : pageSupports) {
                        if (pageSupport.getOs() == os) {
                            match = true;
                            break;
                        }
                    }
                } else {
                    match = true;
                }
                //如果不匹配,过滤掉
                if (!match) {
                    iterator.remove();
                }
            }
        }


3、返回多少天前的时间
public static long getExpiredDayTime(int expiredDays) {
        if (expiredDays >= 0) {
            try {
                Date today = format.parse(format.format(new Date()).substring(0, 10) + " 00:00:00");
                return (today.getTime() - oneDay * expiredDays);
            } catch (ParseException e) {
                e.printStackTrace();
            }
        }
        return 0L;
    }


3、mongo-java-driver-2.6.1.jar的使用

private MongoDB mongoDB;

    public void setMongoDB(MongoDB mongoDB) {
        this.mongoDB = mongoDB;
    }


BasicDBObject query = new BasicDBObject();
        query.put(MongoConstant.USER_ID, userId);

        DBObject dbObject = mongoDB.getDBByName(MongoConstant.DB_NAME)
                .getCollection(MongoConstant.COLL_FRIENDS_PLAY_RESULT).findOne(query);
if (dbObject != null) {
            //应用列表
            BasicDBList friendPlayApp = (BasicDBList) dbObject
                    .get(MongoConstant.FRIEND_PLAY_RESULT);
            for (Object friends : friendPlayApp) {
                List<Integer> friendPlayList = new ArrayList<Integer>();
                //好友id列表
                BasicDBObject friendIdList = (BasicDBObject) friends;
                BasicDBList userPlayBasicDBList = (BasicDBList) friendIdList
                        .get(MongoConstant.USER_ID_LIST);
                Integer appId = (Integer) friendIdList.get(MongoConstant.APP_ID);
                for (Object userPlay : userPlayBasicDBList) {
                    BasicDBObject dbUserPlay = (BasicDBObject) userPlay;
                    if (dbUserPlay.getLong(MongoConstant.TIME) > time) {
                        friendPlayList.add(dbUserPlay.getInt(MongoConstant.USER_ID));
                    }
                }
                if (friendPlayList.size() > 0) {
                    resultMap.put(appId, friendPlayList);
                }
            }

你可能感兴趣的:(game)