访问密钥位于特定范围内的集合中的项目

时间:2015-09-20 10:23:51

标签: java collections

我想将一些数据存储在集合中以用于动画目的,其想法是动画数据存储在关键帧中。要想知道你在动画中的位置,你需要知道在任何特定时间哪个项目是相关的。所以我的问题是,是否存在任何可以支持基于在特定范围内传递的密钥对对象进行检索的集合API。

下面是一个例子

如果我有一些数据代表以下"次"

0.0
1.0
2.5
2.7
3.0

我希望能够存储数据,这样如果我传入一个键值,我将返回最低匹配值。一些示例键值低于

0.7将检索0.0对象
2.49将检索1.0对象
2.7将检索2.7对象
10.0将检索3.0对象

我完全清楚自己可以自己编写代码,但我想检查是否已经存在任何已经存在的API。

2 个答案:

答案 0 :(得分:6)

您需要一个NavigableSet(由TreeSet实现)(或由TreeMap实现的NavigableMap)。它有floor(E e)

等方法
  

返回此set中小于或等于给定元素的最大元素,如果没有这样的元素,则返回null。

答案 1 :(得分:3)

您可以将时间存储在Scanner sc = new Scanner (System.in); String text = sc.nextline(); //if user input here eg "Привет,Мир" System.out.println(text); // here I will recieve "???,??" 中,并使用NavigableSet检索数据。

floor

如果您需要时间数据,还有NavigableSet<Double> timeSet = new TreeSet<Double>(); timeSet.add(0.0); timeSet.add(1.0); timeSet.add(2.5); timeSet.add(2.7); timeSet.add(3.0); System.out.println(timeSet.floor(0.7)); System.out.println(timeSet.floor(2.49)); (例如NavigableMap)方法TreeMap来检索数据。