2014-09-21 5 views
-2

У меня есть эта программа, и в основном методе я добавляю значение в связанный список. Когда я пытаюсь добавить другое значение с помощью метода, который проверяет, добавлено ли ранее добавленное значение в списке, оно не распознает значение как находящееся в списке и выполняет ли оно операцию, если оно не находится в списке. Почему эта программа не распознает объекты, которые помещаются в список? программа не распознает «h», добавлен в список.Проверка наличия объекта в связанном списке

import java.util.LinkedList; 
import java.util.List; 


public class Menu { 
    LinkedList <LinkedList> mainMenuItems = new LinkedList <LinkedList>(); 


public void Menu(){ 

} 

public boolean addMainMenuItem(String newItem, String existingItem, int position){ 
    LinkedList <String> subMenuItems = new LinkedList <String>(); 
    if (! mainMenuItems.contains(existingItem)){ 
     subMenuItems.addLast(newItem); 
     mainMenuItems.add(subMenuItems); 
     return true;} 
    if (mainMenuItems.contains(existingItem)){ 
     subMenuItems.addLast(newItem); 
     int existingIndex = mainMenuItems.indexOf(existingItem); 
     if (position == 1){ 
    LinkedList temp = new LinkedList <LinkedList>(); 
    temp = mainMenuItems.get(existingIndex+1); 
    mainMenuItems.remove(existingIndex+1); 

    mainMenuItems.add(existingIndex + 1, subMenuItems); 
    mainMenuItems.add(existingIndex +2, temp); 

    } 


     if (position == -1){ 
      mainMenuItems.add(existingIndex, subMenuItems);} 
    return true; } 
    return false;} 


public boolean deleteMainMenuItem(String item){ 
    if (mainMenuItems.contains(mainMenuItems.indexOf(item))){ 
    mainMenuItems.remove(mainMenuItems.indexOf(item)); 
    return true;} 
    else{ 
    return false;}} 

public static void main(String[] args){ 
    Menu b = new Menu(); 
    b.addMainMenuItem("h", "b", 1) ; 

b.addMainMenuItem("hi", "h", 1) ; 
b.addMainMenuItem("i", "h", 1) ; 
System.out.println(b.mainMenuItems.get(0)); 
System.out.println(b.mainMenuItems.get(1)); 
b.deleteMainMenuItem("hi"); 
System.out.println(b.mainMenuItems.get(2)); 
System.out.println(b.deleteMainMenuItem("hi")); 


} 







} 
+0

-1 для плохого форматирования – Basilevs

+0

Ваш код в отформатированном формате очень трудно прочитать. Пожалуйста, рассмотрите возможность редактирования сообщения и фиксацию стиля отступов, чтобы он был единообразным и последовательным. Обычно я избегаю использования вкладок для отступов (частое программное обеспечение форума не очень хорошо работает с вкладками) и отступы каждого блока кода 4 пробела. Код, находящийся в том же блоке, должен иметь одинаковый отступ. И вы захотите дать каждому концу фигурные скобки, '' 'свою собственную линию. –

ответ

4

Вы проверяете, если строка содержится на LinkedList<LinkedList>, который всегда быть ложным, поскольку строка не тот же тип, как LinkedList. Если вам действительно нужно проверить это, вам придется перебирать каждый элемент в главном LinkedList, а тест String принадлежит любому из них.

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