Java阵列的有效使用/替代方案
这是一段简单的代码,应该可以说明我的问题所在。我不知道是否还有比这更有效的数组实现。让我感到不舒服的是,我们必须将条件写入Java阵列的有效使用/替代方案,java,arrays,Java,Arrays,这是一段简单的代码,应该可以说明我的问题所在。我不知道是否还有比这更有效的数组实现。让我感到不舒服的是,我们必须将条件写入if()中为每个元素设置块,这会使代码更长。有没有办法在一行中包含某个数组的所有元素?谢谢大家! public class test{ static String[] text; public static void main(String args[]){ text=new String[5]; text[0]="hello"; ...
if()中
为每个元素设置块,这会使代码更长。有没有办法在一行中包含某个数组的所有元素?谢谢大家!
public class test{
static String[] text;
public static void main(String args[]){
text=new String[5];
text[0]="hello";
...
text[4]="bye";
if(text[0].contains("something")==true||...text[4].contains("something")==true)
//do something
}
}
或者使用循环:
for (String item: text) {
if (item.contains("something")) {
// TODO condition
}
}
。。。或者使用难看的解决方法,例如:
if (Arrays.toString(text).contains("something")) {
// TODO condition
}
或者使用循环:
for (String item: text) {
if (item.contains("something")) {
// TODO condition
}
}
。。。或者使用难看的解决方法,例如:
if (Arrays.toString(text).contains("something")) {
// TODO condition
}
您可以编写自己的方法来实现这一点:
public static anyContain(String[] array, CharSequence sub) {
for (String s : array)
if (s.contains(sub))
return true;
return false;
}
然后将调用if
-语句
if (anyContain(text, "something")) {
...
}
您可以编写自己的方法来实现这一点:
public static anyContain(String[] array, CharSequence sub) {
for (String s : array)
if (s.contains(sub))
return true;
return false;
}
然后将调用if
-语句
if (anyContain(text, "something")) {
...
}
我认为这是最好的方法(仅适用于完全相等的元素): 如果您需要测试
包含的内容
,您还可以执行以下操作:
String[] test = new String[] {"one", "two", "something", "three"};
Arrays.sort(test);
int index = Arrays.binarySearch(test, "something", new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o1.contains(o2) ? 0 : -1;
}
});
String[]test=新字符串[]{“一”、“二”、“某物”、“三”};
数组。排序(测试);
int index=Arrays.binarySearch(测试,“某物”,新的比较器(){
@凌驾
公共整数比较(字符串o1、字符串o2){
返回o1。包含(o2)?0:-1;
}
});
因此,还可以获得数组中元素的索引。如果找不到,则为负值。我认为这是最好的方法(仅适用于完全相等的元素): 如果您需要测试
包含的内容
,您还可以执行以下操作:
String[] test = new String[] {"one", "two", "something", "three"};
Arrays.sort(test);
int index = Arrays.binarySearch(test, "something", new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o1.contains(o2) ? 0 : -1;
}
});
String[]test=新字符串[]{“一”、“二”、“某物”、“三”};
数组。排序(测试);
int index=Arrays.binarySearch(测试,“某物”,新的比较器(){
@凌驾
公共整数比较(字符串o1、字符串o2){
返回o1。包含(o2)?0:-1;
}
});
因此,还可以获得数组中元素的索引。如果找不到,则为负值。是否要检查包含性或相等性?我的意思是这个值会是真的吗?
“asf something ABC”
?我很抱歉,我写了这个代码,你不需要==true
。您可以使用文本[0]。包含(“某物”)| |……
,它的工作方式也一样。@JohnSmith。我想你误解了我的评论。我的意思是,text[0]
应该只包含某个东西
,还是应该等于某个东西
?您要检查包含还是相等?我的意思是这个值会是真的吗?“asf something ABC”
?我很抱歉,我写了这个代码,你不需要==true
。您可以使用文本[0]。包含(“某物”)| |……
,它的工作方式也一样。@JohnSmith。我想你误解了我的评论。我的意思是,应该text[0]
只包含something
,还是应该等于something
?我认为只有第一个版本是正确的。数组。toString([“c”,“a”,“r”)。contains(“car”)->true
@arshajii谢谢,现在将修复循环:)@rendon nope。尝试初始化String[]car=new String[]{“c”、“a”、“r”}
并打印数组。toString(car)
。但是如果您正在搜索的字符串是”、“
、”[“
或”
@arshajii),则仍然可能会出现问题。这就是为什么它被称为“丑陋的解决方法”。我回答中的第一个for循环是我通常使用的。我认为只有第一个版本是正确的。Arrays.toString([“c”,“a”,“r”)。contains(“car”)->true
@arshajii谢谢,现在将修复for循环:)@rendon nope。尝试初始化String[]car=new String[]{“c”、“a”、“r”}
并打印数组。toString(car)
。但是如果您正在搜索的字符串是”、“
、”[“
或”
@arshajii),则仍然可能会出现问题。这就是为什么它被称为“丑陋的解决方法”。我的答案中的第一个for循环是我通常使用的。它不检查单个字符串是否包含“something”
,它只检查数组本身是否包含它。@arshajii:你说得对,我只是修正了我的答案,它不检查单个字符串是否包含“something”
,它只是检查数组本身是否包含它。@arshajii:你说得对,我只是修正了我的答案