如何打印 HashMap 中的值而不打印重复项?

Ohl*_*aph 2 java printing hashmap

我正在尝试修复这段代码,我从包含车牌号和所有者列表(该格式)的哈希图中打印。我正在尝试通过 printOwners() 仅打印所有者;但我无法让它不打印重复项。

我已经玩了一段时间了,似乎无法跳过重复项。

这是我的代码:

import java.util.ArrayList;
import java.util.HashMap;

public class VehicleRegister {

    private HashMap<RegistrationPlate, String> owners;

    public VehicleRegister() {
        owners = new HashMap<RegistrationPlate, String>();
    }

    public boolean add(RegistrationPlate plate, String owner) {
        //search for existing plate
        if (!(owners.containsKey(plate))) { // add if no plate
            owners.put(plate, owner);
            return true;
        }

        //if plate is found, check for owner
        else if (owners.keySet().equals(owner)) {
           return false;
        }

        return false;
    }

    public String get(RegistrationPlate plate) {
        return owners.get(plate);
    }

    public boolean delete(RegistrationPlate plate) {
        if (owners.containsKey(plate)) {
            owners.remove(plate);
            return true;
        }

        return false; 
    }

    public void printRegistrationPlates() {
        for (RegistrationPlate item : owners.keySet()) {
            System.out.println(item);
        }
    }

    public void printOwners() {

        for (RegistrationPlate item : owners.keySet()) {
            System.out.println(owners.get(item));            
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Jea*_*art 5

要删除重复项,请使用HashSet<String>

public void printOwners() {
    for (String s : new HashSet<>(owners.values())) {
        System.out.println(s);            
    }
}
Run Code Online (Sandbox Code Playgroud)

或者使用 Java 8Streamdistinct()方法:

public void printOwners() {
    owners.values().stream().distinct().forEach(System.out::println);
}
Run Code Online (Sandbox Code Playgroud)