2013-07-12 5 views
-1

Я пытаюсь получить объект с именем keywords из ArrayList на основе списка terms.Извлечь объект из ArrayList в Java

Я написал код, чтобы получить индекс объекта и скопировать его в другую ArrayList Ar2

public ArrayList GetGrams(int n, ArrayList Keywords) { 
    ArrayList Ar = new ArrayList(); 
    ArrayList Ar2 = new ArrayList(); 

    for (int i = 0; i < terms.size(); i++) { 
     if (Keywords.toString().contains(terms.get(i).toString())) 
     { 
      String myString = terms.get(i).toString();; 
      int myIndex=0; 
      myIndex = Keywords.toString().indexOf(myString,0); 

      Ar.add(terms.get(i)); 
      Ar2.add(Keywords.get(myIndex)); 
     } 
    } 
} 

проблема индекс, что я неправильно что 1181 в то время как ключевые слова содержат только 150 ключевых слов.

Итого: Мне нужно скопировать соответствующий объект в keywords в Ar2, который соответствует terms.

+2

Есть ли причина, по которой вы не используете дженерики? Кроме того, было бы легче прочитать ваш код, если бы вы уделяли больше внимания отступу и соблюдали соглашения об именах Java. Кроме того, не совсем понятно, почему вы так называете 'toString()'. Я сильно подозреваю, что вы вообще не должны называть 'toString' * *. И в чем смысл параметра 'n'? Я в основном очень смущен относительно того, что это пытается сделать вообще. Это действительно помогло бы, если бы вы могли подавать образец и желаемый результат. –

+0

это часть программы. Таким образом, каждый объект в «Ключевые слова» содержит некоторые атрибуты, такие как: слова, вес и поддержка. что мне нужно использовать его позже в программе. Поэтому мне нужно сравнить термины из «term» Arraylist и скопировать соответствующие ключевые слова, которые являются «словом» в объекте, для этого я использую 'toString()' для сравнения. – Mubarak

+0

Это фактически не отвечает ни на один из моих вопросов ... и если вам нужно сравнить определенные части в «Ключевые слова», почему бы вам не получить это конкретное свойство? На данный момент ваш вопрос слишком непонятен. –

ответ

0

Вы используете индекс, чтобы найти позицию слова в строке, но ArrayList имеет собственный индекс.
Это неправильное: Keywords.get(myIndex)), где myIndex будет определенно больше, чем ArrayList.
Тогда вы не должны конвертировать ArrayList в String, просто используйте keywords.contains(object).

+0

Я пробовал 'keywords.contains (object)', но он является логическим и возвращает только True и False. – Mubarak

+0

if (keywords.contains (terms.get (i))) {Ar.add (terms.get (i)); Ar2.add (terms.get (i));} - если terms.get (i) существует в ключевых словах, добавьте это слово в оба массива по мере необходимости. Вам не нужен myIndex. Но я не знаю, зачем вам 2 массива. – Alex

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