java生成數字001到999的2種方法
阿新 • • 發佈:2019-02-05
package test; import java.sql.Timestamp; import java.text.SimpleDateFormat; import java.util.concurrent.atomic.AtomicInteger; public class IdTest { private AtomicInteger count = new AtomicInteger(1); private static final String JOBTBL_RECORD_ID = "D"; private static final String PROCESS_ID = "EBD01"; private Timestamp now = getSystemTimestamp(); public static void main(String[] args) { // TODO 自動生成されたメソッド・スタブ IdTest idTest = new IdTest(); // idTest.putong(); idTest.xianCheng(); System.out.println(idTest.getJobRequestId()); } //普通の方法 public void putong() { for (int i = 1; i <= 999; i++) { if (i < 10) { System.out.println("00" + i); } else if (i >= 100) { System.out.println(i); } else System.out.println("0" + i); } }
//スレッドセーフ方法 public void xianCheng() { AtomicInteger count = new AtomicInteger(0); for (; (count.getAndIncrement()) < 999;) { if (count.get() < 10) { System.out.println("00" + count); } else if (count.get() >= 100) { System.out.println(count); } else System.out.println("0" + count); } } private String getJobRequestId() { StringBuilder builder = new StringBuilder(); StringBuilder num = new StringBuilder(); // 3桁の數字の採番処理。999になった場合は001から採番すること。 if (count.get() > 999) { count = new AtomicInteger(1); } // 3桁の數字を採番処理。 if (count.get() < 10) { num.append("00").append(count.getAndIncrement()); } else if (count.get() >= 100) { num.append(count.getAndIncrement()); } else { num.append("0").append(count.getAndIncrement()); } // ジョブリクエストID日時部分. SimpleDateFormat format2 = new SimpleDateFormat("yyyyMMddHHmmssSSS"); String date = format2.format(now); // 組み合わせる。 builder.append(JOBTBL_RECORD_ID); builder.append(date); builder.append(PROCESS_ID); builder.append(num); return builder.toString(); } /** * システム日時取得する. * * @return Current system timestamp. */ private Timestamp getSystemTimestamp() { return new Timestamp(System.currentTimeMillis()); } }