2014-09-21 53 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 2014-09-21 05:03:59

+0

格式化的代码非常难以阅读。请考虑编辑您的帖子并修复缩进样式,使其一致和一致。我通常避免使用制表符缩进(论坛软件通常不能很好地使用制表符)并缩进每个代码块4个空格。在同一个块中的代码应该缩进一样。并且你会想要给每个结束大括号,'''自己的线。 – 2014-09-21 05:04:01

回答

4

如果字符串由LinkedList<LinkedList>始终是假的,因为一个字符串是不是同一类型的链表包含你正在测试。如果你真的需要测试这个,那么你将不得不遍历主LinkedList中的每个项目,并且测试String是否被任何一个项目持有。

相关问题