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 从数组里均衡的取出每一个元素的主要内容,如果未能解决你的问题,请参考以下文章