• 从list中随机选出几个数,并按照原来的顺序排列


    需求:

    从list中随机选出几个数,并按照原来的顺序排列(比如从list中随机选出6个数)

    方案一:

    //若对象size大于6,则随机去除6个对象,并按照原来的顺序排列
    while(list.size() > 6) {
                    //随机取一个对象
                 Long target = list.get(randomId.nextInt(list.size()));
                 for(ListObject object : list) {
                         if(object.getId() == target) {
                                    //将取出的那个对象删除
                             list.remove(object);
                             break;
                         }
                     }        
    }

    方案二:

            //若list.size()大于6套,随机产生6个对象,并按照原来的顺序排列
            //若list的对象为ListObject
            if(list.size() > 6) {
                Random randomId = new Random();
                //对随机的6个对象排成原来的默认顺序
                List<Integer> indexes = new ArrayList<Integer>();
                while(indexes.size() < 6) {
                    //对象在list里的位置
                    int index = randomId.nextInt(list.size());
                    if(!indexes.contains(index)) {
                        indexes.add(index);
                    }
                }
                //对indexes排序
                Collections.sort(indexes);
                //取出indexes对应的list放到newList
                List<ListObject> newList = new ArrayList<ListObject>();
                for(int index : indexes) {
                    newList.add(list.get(index));
                }
                list.clear();
                list.addAll(newList);
            }

    分析:

    考虑到性能问题,会考虑方案二,复杂度低,而且容易看懂。

  • 相关阅读:
    eclipse中常用快捷键
    js sort排序
    js parseInt函数
    Jquery常用方法
    jquery的call()和apply()方法
    Jquery中的事件命名机制
    CSS层叠样式表
    推荐博客园中好的博客主
    页面刷新或者子窗体刷新父窗体,不提示 "重试或取消”对话框
    FullCalendar日历插件使用说明
  • 原文地址:https://www.cnblogs.com/jiangxiaoyaoblog/p/5752166.html
Copyright © 2020-2023  润新知