【问题标题】:Error when trying to use contains method in java [duplicate]尝试在java中使用包含方法时出错[重复]
【发布时间】:2017-03-17 10:38:56
【问题描述】:

我在尝试使用 java 中的 contains 方法编译类时遇到此错误。该错误表示它找不到符号,考虑到我之前多次使用 contains 方法没有任何问题,我觉得这有点奇怪。

我得到的错误如下所示:

这是我的代码:

import java.util.*;

public class DVDAdministrasjon {

private Map personerOversikt;

public void nyPerson(String navn){
  for(int t = 0; t < personerOversikt; t++){
  if(!personerOversikt.get(t).equals(navn)){
    Person newPerson = new Person(navn);
    personerOversikt.put(navn, newPerson);
  } else {
    System.out.println("Personen er allerede registrert!");
  }
  }
}
public void kjop(Map kjoptDVD, Map eier){
  int teller = 0;
  Scanner tastatur = new Scanner(System.in);
  System.out.println("Hvem har kjopt DVD-en?");
  String navn = tastatur.nextLine();
  System.out.println("Hva er tittelen paa DVD-en?");
  String filmNavn = tastatur.nextLine();
  if(personerOversikt.contains(navn)){
    kjoptDVD.put(navn, filmNavn);
    eier.put(navn, filmNavn);
  } else {
    System.out.println("Personen er ikke registrert enda!");
  }
  }
  public void laan (Map utlaantDVD, Map eier, Map laantDVD){
    Scanner tastatur = new Scanner (System.in);
    System.out.println("Hvem vil laane DVD-en?");
    String navn = tastatur.nextLine();
    System.out.println("Hvem skal DVD-en laanes fra?");
    String navn2 = tastatur.nextLine();
    System.out.println("Hva er tittelen paa DVD-en?");
    String filmNavn = tastatur.nextLine();
    if(eier.contains(filmNavn)){
      if(personerOversikt.contains(navn2)){
      laantDVD.put(navn, filmNavn);
      utlaantDVD.put(navn2, filmNavn);
    } else{
      System.out.println(navn2 + " er ikke registrert");
    }
  } else{
    System.out.println(navn2 + " eier ikke filmen");
  }
  }
}

这是引用的类:

import java.util.*;

public class Person {

private String navn;
private Map kjoptDVD;
private Map utlaantDVD;
private Map laantDVD;
private Map dvdOversikt;

public Person (String navn){
 this.navn = navn;
 }
}

【问题讨论】:

  • 我认为您正在寻找Map 中的containsKey 方法
  • 嗯,有道理,我只使用过使用 arraylist 的 contains 方法,并认为该方法对两者都适用。我会测试一下!

标签: java contains


【解决方案1】:

错误的原因很简单: 地图接口没有名为 contains

的方法

您需要使用 Map.containsKeyMap.containsValue 但包含未定义且无法使用的内容..

此外,Map 是一个接口,所以您正在实现的类可能是 HAshMap.. 所以 containsKeyContainsValue 是内部使用的方法equalshascode 以防万一您有一个自定义类,例如 PErson 类或类似的..

并且不要在 Collection 中使用原始类型...

sn-p containsValue 在 HashMap 类中...

public boolean containsValue(Object value) {
    Node<K,V>[] tab; V v;
    if ((tab = table) != null && size > 0) {
        for (int i = 0; i < tab.length; ++i) {
            for (Node<K,V> e = tab[i]; e != null; e = e.next) {
                if ((v = e.value) == value ||
                    (value != null && value.equals(v)))
                    return true;
            }
        }
    }
    return false;
}

【讨论】:

    【解决方案2】:

    您使用的是地图而不是集合。如果您检查Map javadocs,您会看到Map 接口没有contains 方法。你应该改用containsKey

    【讨论】:

      【解决方案3】:

      Map 没有方法 contains。试试containsKey

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-06-12
        • 2020-09-28
        • 2016-04-24
        • 2013-09-20
        • 2014-06-10
        • 1970-01-01
        • 2013-10-19
        • 1970-01-01
        相关资源
        最近更新 更多