1. 程式人生 > >java 從數組裏均衡的取出每一個元素

java 從數組裏均衡的取出每一個元素

java array

需求:均衡的從數組裏依次取出每一個元素,環形數組

下面的代碼是從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 從數組裏均衡的取出每一個元素