![]() |
1
2621
警告:这不适用于基元数组(请参见注释)。 自从 java-8 现在可以使用流。
检查
例子
|
![]() |
2
325
先清除代码。我们已经(更正):
这是一个可变的静态,findbugs会告诉你是非常淘气。它应该是私有的:
(注意,您可以将
所以,引用数组是坏的,特别是在这里我们需要一个集合:
(像我这样偏执的人,如果把它包在里面,可能会感到更自在。
“对于给定的字符串s,是否有一种测试值是否包含s的好方法?”
O(1)。 |
![]() |
3
185
你可以使用
请注意,此方法返回
还有一些方法可用于各种基元数组。 例子:
|
![]() |
4
148
只需手动执行即可:
改进:
这个
|
![]() |
5
66
如果数组未排序,则必须遍历所有内容,并对每个内容调用equals。 如果对数组进行排序,则可以执行二进制搜索,其中 Arrays 班级。 一般来说,如果您要进行大量的成员资格检查,您可能希望将所有内容存储在一个集合中,而不是数组中。 |
![]() |
6
63
Four Different Ways to Check If an Array Contains a Value 1)使用列表:
2)使用集合:
3)使用简单的循环:
4)使用array.binarysearch(): 下面的代码是错误的,为了完整起见,这里列出了它。BinarySearch()只能用于已排序的数组。你会发现下面的结果很奇怪。这是对数组排序时的最佳选项。
快速实例:
|
![]() |
7
47
为了它的价值,我做了一个测试,比较了3个速度建议。我生成随机整数,将其转换为字符串并将其添加到数组中。然后我搜索尽可能多的数字/字符串,这对于aslist().contains()来说是最坏的情况。 当使用10 k数组大小时,结果如下: Sort & Search : 15 Binary Search : 0 asList.contains : 0 使用100K数组时,结果如下: Sort & Search : 156 Binary Search : 0 asList.contains : 32 因此,如果数组是按排序顺序创建的,那么二进制搜索速度最快,否则aslist().contains将是最快的方法。如果您有许多搜索,那么对数组进行排序以便使用二进制搜索可能是值得的。这完全取决于您的应用程序。 我想这是大多数人所期望的结果。测试代码如下:
|
![]() |
8
33
使用Java 8可以创建流并检查流中的任何条目是否匹配。
或作为通用方法:
|
![]() |
9
31
您可以使用array.as list方法直接将其初始化为列表,而不是使用快速数组初始化语法,例如:
然后你可以这样做(如上所述):
|
![]() |
10
25
你可以使用 Arrays class 对值执行二进制搜索。如果数组未排序,则必须使用同一类中的排序函数对数组进行排序,然后对其进行搜索。 |
![]() |
11
16
顽固分子(但我认为在这里有个教训):
|
![]() |
12
12
实际上,如果您按照Tom Hawtin的建议使用hashset<string>,则无需担心排序问题,而且您的速度与预排序数组上的二进制搜索速度相同,甚至可能更快。 显然,这完全取决于代码的设置方式,但从我的立场来看,顺序是: 关于一个 未分类的 数组:
在已排序的数组上:
所以不管怎样,都是为了胜利。 |
![]() |
13
10
如果你有google收藏库,Tom的答案可以通过使用不可变集(http://google-collections.googlecode.com/svn/trunk/javadoc/com/google/common/collect/immutableset.html)简化很多。 这确实从提议的初始化中消除了很多混乱。
|
![]() |
14
9
一种可能的解决方案:
|
![]() |
15
7
开发人员经常这样做:
上面的代码可以工作,但不需要先将列表转换为set。将列表转换为集合需要额外的时间。它可以简单到:
或
第一个比第二个更可读。 |
![]() |
16
6
在 爪哇8 使用流。
|
![]() |
17
5
使用简单的循环是最有效的方法。
礼貌对待 Programcreek |
![]() |
18
4
|
![]() |
19
3
试试这个:
|
![]() |
20
3
使用以下
对象实用程序.java
Java语言
正如您在上面的代码中看到的,还有其他实用程序方法
|
![]() |
21
2
检查这个
|
![]() |
22
2
arrays.aslist()->然后调用contains()方法将始终有效,但搜索算法更好,因为您不需要在数组周围创建轻量级的列表包装器,这正是arrays.aslist()所做的。
|
![]() |
23
2
如果你不想让它区分大小写
|
![]() |
24
2
使用
例子:
假--不存在 |
![]() |
25
-2
创建一个最初设置为假的布尔值。运行一个循环来检查数组中的每个值,并与要检查的值进行比较。如果有匹配,请将Boolean设置为true并停止循环。然后断言布尔值为真。 |
![]() |
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 4 月前 |
![]() |
bairog · 从按属性筛选的对象数组字典中创建值数组 4 月前 |
![]() |
Anka Hanım · 关于结构和动态数组地址的问题 4 月前 |
![]() |
Geremia · 2D NumPy数组+1D数组? 4 月前 |
![]() |
MARTIN · 交换第一个和最后一个单词,反转所有中间的字符 5 月前 |
![]() |
Paul Williams · 迭代数组时输出有问题 5 月前 |