2016-06-18 38 views
-3

我有具有一定值的數組列表abc -比較數組列表的所有值的字符串

ArrayList<String> abc = new ArrayList<>(); 
abc.add("hi"); 
abc.add("hello Yash"); 
abc.add("i am Yash"); 
String x = "Yash"; 

現在,我想知道,如果x包含在任何的abc元素。
如果是,則獲取包含x的元素的索引。

+0

你應該寫一個正則表達式和interate槽ArrayList中,那麼如果它匹配返回索引。 –

+0

我剛開始用它 – Yash

+0

讓我們瞭解您到目前爲止試過 –

回答

2

這裏有一個簡單的解決方案:

public class FindText 
{ 


    public static void main(String[] args) 
    { 
     ArrayList<String> abc = new ArrayList<>(); 
     abc.add("hi"); 
     abc.add("hello Yash"); 
     abc.add("i am Yash"); 
     String x = "Yash"; 

     for(int i=0; i<abc.size(); i++) 
     { 
      if(abc.get(i).contains(x)) 
      { 
       int index = i; 
       System.out.println(index); 
      } 
     } 
    } 
} 

它給你1和2的指標,其中包括文本「佳日」

+0

感謝爲我工作 – Yash

+0

不客氣。 –

0

您可以使用兩種不同的方式實現這一目標?

  1. 老學校
  2. 和lambda表達式的方式

老校訓:

public static void main(String[] args) { 
    List<String> abc = new ArrayList<>(); 
    abc.add("hi"); 
    abc.add("hello Yash"); 
    abc.add("i am Yash"); 
    String x = "Yash"; 
    List<String> resultOldSchool = new ArrayList<>(); 
    for (String sentence : abc) { 
     if (sentence.contains(x)) { 
      resultOldSchool.add(sentence); 
     } 
    } 
    System.out.println(resultOldSchool); 
} 

蘭巴達斯舉例:

public static void main(String[] args) { 
    List<String> abc = new ArrayList<>(); 
    abc.add("hi"); 
    abc.add("hello Yash"); 
    abc.add("i am Yash"); 
    String x = "Yash"; 
    List<String> resultJava8 = findStringInList(abc, x); 
    if (!resultJava8.isEmpty()) { 
     System.out.println(resultJava8); 
    } 
} 

public static List<String> findStringInList(final List<String> list, final String strng) { 
    return list.stream().filter(s -> s.contains(strng)).collect(Collectors.toList()); 
} 

隨意決定....

0

假設abcList<String>xString那麼這應該做的伎倆。

List<Integer> indexes = new LinkedList<Integer>(); 
for(int i = 0; i < abc.size(); i++) 
{ 
    if(abc.get(i).contains(x)) 
     indexes.add(i); 
} 

循環結束後,包含x將在indexes列表中元素的所有索引。