gpt4 book ai didi

java - 有没有一种方法可以对数据集使用compareTo() 方法,而无需迭代该集合的每个元素?

转载 作者:行者123 更新时间:2023-12-01 12:39:52 26 4
gpt4 key购买 nike

我想知道是否有一种方法可以使用compareTo()而不必迭代数据集中的每个字符串元素,我很确定使用数组这是不可能的,但是是否有一种数据结构能够以这种方式工作?

请参阅下面的示例以获得更清晰的解释:

public static int PronounDetector(String [] pronouns)
{
String [] you = {"you", "You"};
for (int i = 0; i < pronouns.length; i++)
{
if (pronouns[i].compareTo(you) == 0)
//Is there a way for compareTo to run through
//the entire String data set without having to make
//it iterate through each element using a for loop?
{
return 2;
}
}
}

编辑:我知道无论程序将遍历数据集什么(否则它如何找到匹配项?),我只是想看看是否有办法在我实际上没有的情况下做到这一点在 for 循环中实际键入。

最佳答案

如果要在搜索处理过程中跳过某些数据,必须满足两个条件。

  1. 数据必须相关。
  2. 数据必须经过组织。

您可以通过对数组进行排序然后从中间进行比较来改进搜索。然后,在每个步骤中,您都将必须比较的元素减少一半。

您可以使用 TreeMap 代替数组,它会将数据存储在树结构中以获得相同的结果。

代码示例:

public static boolean contains(String[] array, String key) {

Objects.requireNonNull(array,"The array must not be null");
Objects.requireNonNull(array,"The key must not be null");

String[] copy = array.clone();
Arrays.sort(copy);

return Arrays.binarySearch(copy, key) != -1;
}

关于java - 有没有一种方法可以对数据集使用compareTo() 方法,而无需迭代该集合的每个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25215865/

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