设置第一个项目集合的元组集合,例如
val xs = Seq(
((1 to 5).toSet ++ Set(9), "apple"),
((15 to 17).toSet, "pear"),
((21 to 30).toSet, "grape"))
给定值x:Int
,如何有效识别第二项? (真实用例包括数千套。)
对于val x = 22
,结果为Some("grape")
,对于val x = 19
,结果为None
。
注意每组中的值不一定是连续的。
注意集合不重叠(任何集合交集都证明为空)。
答案 0 :(得分:5)
取决于您的使用案例,但鉴于您关注效率,我假设您要进行大量查找。
我还假设你使用了一个xs
,并且很多次都在查找。
将xs
预处理到Int->String
val xsMap = (xs flatMap { case (s, v) => s.map((_,v))}).toMap[Int, String]
然后它是微不足道的(和O(1))来查找元素
xsMap.get(22) //> res0: Option[String] = Some(grape)
xsMap.get(19) //> res1: Option[String] = None
答案 1 :(得分:1)
怎么样:
$categoryId = (isset($_GET['id']) ? $_GET['id']:NULL);
if ($categoryId) {
try {
// select specific video based on category id
$sql = "SELECT videos.id, videos.name, videos.video_src, videos.pLike, videos.video_tag_id, category.video_tag FROM videos,category WHERE videos.video_tag_id = category.video_tag ORDER BY RAND() LIMIT 1";
$query = $pdo->prepare($sql);
$query->execute();
} catch(Exception $e) {
echo $e->getMessage();
die();
}
//foreach for school
$listCategoryVideo = $query->fetchAll(PDO::FETCH_ASSOC);
}else {
echo "nope";
die();
}//end if video catgeory was found and executed