Java 为什么在使用containsKey方法后,我的列表中会出现重复项
我正在使用hashmap验证密钥是否存在于映射中,并将密钥添加到列表中我正在使用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) {
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