Java 为什么在使用containsKey方法后,我的列表中会出现重复项

Java 为什么在使用containsKey方法后,我的列表中会出现重复项,java,list,dictionary,arraylist,hashmap,Java,List,Dictionary,Arraylist,Hashmap,我正在使用hashmap验证密钥是否存在于映射中,并将密钥添加到列表中我正在使用containsKey来防止重复,但它将重复添加到我的列表中 private static void makeList(int n,ArrayList<Integer> minimum ,HashMap<Integer,Integer> ugly) { for(int i=1; minimum.size() < n; ++i) {

我正在使用hashmap验证密钥是否存在于映射中,并将密钥添加到列表中我正在使用containsKey来防止重复,但它将重复添加到我的列表中

 private static  void makeList(int n,ArrayList<Integer> minimum ,HashMap<Integer,Integer> ugly) {
        for(int i=1; minimum.size() < n; ++i) {
           
            if(!ugly.containsKey(2*i)); {
            minimum.add(2*i);
            ugly.put(2*i,2*i );
            }
            int m3=3*i; 
            if(!ugly.containsKey(3*i)){
            minimum.add(3*i);
             ugly.put(3*i,3*i);   
            }
            int m5=5*i;
            if(!ugly.containsKey(m5)){
           minimum.add(m5);
           ugly.put(m5,m5);
            }
            
            
        }
            
    } 
private静态void生成列表(int n,ArrayList minimum,HashMap){
对于(int i=1;最小.size()
我看到你给了分号
if()之后

把它拿开试试

 private static  void makeList(int n,ArrayList<Integer> minimum ,HashMap<Integer,Integer> ugly) {
        for(int i=1; minimum.size() < n; ++i) {
           
            if(!ugly.containsKey(2*i)) { //<-edited part, removed semicolon
            minimum.add(2*i);
            ugly.put(2*i,2*i );
            }
            int m3=3*i; 
            if(!ugly.containsKey(3*i)){
            minimum.add(3*i);
             ugly.put(3*i,3*i);   
            }
            int m5=5*i;
            if(!ugly.containsKey(m5)){
           minimum.add(m5);
           ugly.put(m5,m5);
            }
            
            
        }
            
private静态void生成列表(int n,ArrayList minimum,HashMap){
对于(int i=1;最小.size()if(!ught.containsKey(2*i)){/我知道你在
if()之后加了分号

把它拿开试试

 private static  void makeList(int n,ArrayList<Integer> minimum ,HashMap<Integer,Integer> ugly) {
        for(int i=1; minimum.size() < n; ++i) {
           
            if(!ugly.containsKey(2*i)) { //<-edited part, removed semicolon
            minimum.add(2*i);
            ugly.put(2*i,2*i );
            }
            int m3=3*i; 
            if(!ugly.containsKey(3*i)){
            minimum.add(3*i);
             ugly.put(3*i,3*i);   
            }
            int m5=5*i;
            if(!ugly.containsKey(m5)){
           minimum.add(m5);
           ugly.put(m5,m5);
            }
            
            
        }
            
private静态void生成列表(int n,ArrayList minimum,HashMap){
对于(int i=1;最小.size()如果(!ught.containsKey(2*i)){/很简单,它会清除代码

private static  void makeList(int n, List<Integer> minimum, Map<Integer,Integer> ugly) {
    for (int i = 1; minimum.size() < n; i++)
        for (int j : Arrays.asList(2, 3, 5))
            if(ugly.put(i * j, i * j) == null)
                minimum.add(i * j);
}
私有静态void makeList(int n,最小列表,映射丑陋){
对于(int i=1;minimum.size()

p.S.为什么不使用
Set
而不是
Map
key==value

简单一点,它会清除代码

private static  void makeList(int n, List<Integer> minimum, Map<Integer,Integer> ugly) {
    for (int i = 1; minimum.size() < n; i++)
        for (int j : Arrays.asList(2, 3, 5))
            if(ugly.put(i * j, i * j) == null)
                minimum.add(i * j);
}
私有静态void makeList(int n,最小列表,映射丑陋){
对于(int i=1;minimum.size()
p.S.为什么不使用
Set
而不是
Map
key==value