java 从数组里均衡的取出每一个元素

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 从数组里均衡的取出每一个元素相关的知识,希望对你有一定的参考价值。

需求:均衡的从数组里依次取出每一个元素,环形数组

下面的代码是从Netty的源码(

DefaultEventExecutorChooserFactory.java

)中,抽出来的;

    

package com.xingej.toolkit.array;

import java.util.concurrent.atomic.AtomicInteger;

//从数组里依次取出每一个元素,形成一个环形数组
public class SelectElem {
    private final AtomicInteger idx = new AtomicInteger(0);
    private final String[] elems;

    SelectElem(String[] elems) {
        this.elems = elems;
    }

    // 均衡的从数组里取出每一个元素
    // 方式一
    public String nextA(){
        return elems[Math.abs(idx.getAndIncrement() % elems.length)];
    }

    // 方式二 位运算
    public String nextB() {
        return elems[idx.getAndIncrement() & elems.length - 1];
    }

    //测试
    public static void main(String[] args) {
        String[] elems = {"spark", "hive", "hadoop","lgy"};
        
        SelectElem selectElem = new SelectElem(elems);
        
        for (int i = 0; i < 10; i++){
            System.out.println("---->:\t" + selectElem.nextB());
        }
    }
}


代码已经上传到git上了。

https://github.com/xej520/toolkit









本文出自 “XEJ分布式工作室” 博客,请务必保留此出处http://xingej.blog.51cto.com/7912529/1970414

以上是关于java 从数组里均衡的取出每一个元素的主要内容,如果未能解决你的问题,请参考以下文章

scala如何取出rdd中的每一个元素

jAVA如何使一个数组里面的元素随机交换位置

php里如何把 数组里的指定元素给取出来

如何从已经规定的数组中随机取出一个元素?

java中怎么取两个数组中不相同的数据?

jquery循环获取值想依次添加到数组里,再怎么从数组中取出值