检查对象是否包含在链接列表中

时间:2014-09-21 05:00:01

标签: java linked-list contains

我有这个程序,在main方法中我将一个值添加到链表中。当我尝试通过检查以前添加的值是否在列表中的方法添加另一个值时,它不会将该值识别为在列表中,并且如果它不在列表中则执行它应该执行的操作。为什么此程序无法识别列入列表的对象?该计划无法识别" 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"));


}







}

1 个答案:

答案 0 :(得分:4)

您正在测试LinkedList<LinkedList>是否包含String,始终为false,因为String与LinkedList的类型不同。如果你真的需要对此进行测试,那么你将不得不遍历主LinkedList中的每个项目,并且其中任何一个都会对字符串进行测试。