2013-08-09 2 views
0

Это простой код, который должен продемонстрировать точку моего вопроса. Я не знаю, есть ли более эффективные реализации массивов, чем этот. Что делает их настолько неудобными для меня, так это то, что мы имеем написать условие в блок 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  
    } 
} 
+2

Можете ли вы использовать петлю? –

+3

Вы хотите проверить наличие сдерживания или равенства? Я имею в виду, будет ли это значение истинным - '' asf что-то ABC "? –

+1

Мне очень жаль, я быстро написали этот код –

ответ

4

Либо использовать цикл:

for (String item: text) { 
    if (item.contains("something")) { 
     // TODO condition 
    } 
} 

... или использовать уродливые обходной путь, например:

if (Arrays.toString(text).contains("something")) { 
    // TODO condition 
} 
+0

Я думаю, что только первая версия верна. 'Arrays.toString ([" c "," a "," r "]). Содержит (" автомобиль ") -> true' – rendon

+0

@arshajii спасибо, исправит for-loop сейчас :) – Mena

+0

@rendon nope. Попробуйте инициализировать 'String [] car = new String [] {" c "," a "," r "}' и напечатать 'Arrays.toString (car)'. – Mena

2

Вы можете написать свой собственный метод, чтобы сделать это:

public static anyContain(String[] array, CharSequence sub) { 
    for (String s : array) 
     if (s.contains(sub)) 
      return true; 

    return false; 
} 

Затем if -statement будет

if (anyContain(text, "something")) { 
    ... 
} 
0

Я думаю, что это лучший способ (только для полных равных элементов):

text=new String[5]; 
... 
if (Arrays.asList(text).contains("something")) { 
    // you code here 
} 

Если вам нужен тест на contains вы также можете сделать:

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; 
    } 
}); 

В результате вы также получаете индекс элемента в массиве. Или отрицательное значение, если не найдено.

+0

Это не проверяет, содержат ли отдельные строки '' something'', это просто проверяет, содержит ли сам массив. – arshajii

+0

@arshajii: ты прав, я просто исправлю свой ответ –

Смежные вопросы