Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将Instant转换为Int_Java_Android_Kotlin_Instant - Fatal编程技术网

Java 如何将Instant转换为Int

Java 如何将Instant转换为Int,java,android,kotlin,instant,Java,Android,Kotlin,Instant,在我的应用程序中,我有AlarmManager来设置计划通知 为了对每个项目都有唯一的通知,我需要为每个挂起的意图设置唯一的id,否则通知会相互重叠 我的问题是我的PK是字符串,而不是int。在我的项目模型中,我最接近int的东西是Instant,它表示通知应该发送的时间,并且是唯一的 由于pendingentid只是一个int,我如何将Instant转换为int? 或者我应该采取另一种方法,在我的模型中创建数据字段来保存挂起的意图ID吗 据我所知,我不应该直接转换它,因为它会弄乱日期/时间,并

在我的应用程序中,我有
AlarmManager
来设置计划通知

为了对每个项目都有唯一的通知,我需要为每个挂起的意图设置唯一的id,否则通知会相互重叠

我的问题是我的PK是字符串,而不是int。在我的项目模型中,我最接近int的东西是Instant,它表示通知应该发送的时间,并且是唯一的

由于
pendingent
id只是一个int,我如何将Instant转换为int? 或者我应该采取另一种方法,在我的模型中创建数据字段来保存挂起的意图ID吗


据我所知,我不应该直接转换它,因为它会弄乱日期/时间,并且可能(?)不会通过唯一的(

使用
hashCode
进行简单的字符串到int的转换。但根据定义,散列码不是唯一的。如果可能,将类型从
int
更改为
String
可能是最好的选择。如果您确实需要转换,我建议您创建类似于和
IndexProvider
的内容

public interface IndexProvider {

    /**
     * Idempotent index provider for id conversion.
     * Be aware of memory consumption because the implementations are allowed to cache id's.
     * @param id unique id
     * @return a cached unique id or a new unique id
     */
    int getIndex(String id);

}
这将允许您简单地解决问题。您可以在实现中使用映射来保存
字符串
id。另一个想法是在数据库中解决这个问题。例如,一个新表为每个
String
id保存一个
int
id。最后,您必须修改某些内容,并且每个方法都有Pro和Contra


这可能不是一个完整的答案,但我没有足够的声誉发表评论。

我认为这应该行得通:

instant.get(ChronoField.INSTANT_SECONDS)

它可以是
长的
,还是必须是
int
?您的实例的粒度是多少
Instant
具有纳秒精度,您可以在5秒内使用
Instant
s耗尽
int
的范围。另一方面,如果您只需要第二个粒度,例如,
int
可能会持续100年。