gpt4 book ai didi

java - 根据 id 和日期获取种子,对象数量最少

转载 作者:行者123 更新时间:2023-11-30 07:13:49 25 4
gpt4 key购买 nike

我需要为改组创建一个种子,该种子应基于 id (int) 和当前日期(不包括时间)。这是为了保留一天的 id 顺序并在第二天更改它。我现在有以下方法:

private static long getSeedForShuffle(int id)
{
Date date = new Date();
Calendar cal = MyConstants.UTC_CALENDAR;
cal.setTime(date);
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH);
int day = cal.get(Calendar.DAY_OF_MONTH);
double seed = id * 1e8 + year * 1e4 + month * 1e2 + day;
return (long) seed;
}

这在 MyConstants 中:

public class MyConstants {
public static final Calendar UTC_CALENDAR = Calendar.getInstance(TimeZone
.getTimeZone("UTC"));
}

有没有办法避免每次调用方法时都创建新的日期对象?即有什么比做更好的事情吗

Date date = new Date();

getSeedForShuffle方法中,由于该方法只需要当前的日月年,原则上每天只能生成一次?

注意:此代码在网络应用程序中运行。

(在阅读 Effective Java Item 5: Avoid creating unnecessary objects 后开始思考这个问题。)

最佳答案

public long seed(int id, long time) {
return id ^ (time / 86400000L)
}

have fun

关于java - 根据 id 和日期获取种子,对象数量最少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19083084/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com