尝试在java中使用contains方法时出错

时间:2016-11-03 18:04:27

标签: java contains

尝试使用java中的contains方法编译类时出现此错误。错误说它找不到符号,我觉得有点奇怪,因为我之前已经多次使用了contains方法而没有任何问题。

我得到的错误如下:

https://i.imgur.com/tD1ty3A.png

这是我的代码:

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;
 }
}

3 个答案:

答案 0 :(得分:0)

您正在使用地图而不是集合。如果您选中Map javadocs,则会看到Map界面没有contains方法。您应该使用containsKey代替。

答案 1 :(得分:0)

Map没有方法contains。试试containsKey

答案 2 :(得分:0)

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

的方法

您需要使用Map.containsKeyMap.containsValue,但包含因为它未定义且不起作用..

此外,Map是一个界面,所以你实现的类可能是 HAshMap ..所以 containsKey ContainsValue 是内部使用的方法等于 hascode ,以防你在那里有像PErson类或类似的自定义类。

并且不要将原始类型与Collection ...

一起使用 HashMap类中的

片段containsValue ...

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;
}