Java 迭代器不';一切都没有安排好

Java 迭代器不';一切都没有安排好,java,iterator,set,Java,Iterator,Set,我试图用迭代器搜索一个集合,但当我搜索时,它只找到整个集合中的两个!,这是我的密码: import java.net.URL; import com.google.gson.Gson; import java.net.URLEncoder; import java.io.InputStreamReader; import java.io.*; import javax.swing.*; import java.awt.event.*; import java.util.*; public cl

我试图用迭代器搜索一个集合,但当我搜索时,它只找到整个集合中的两个!,这是我的密码:

import java.net.URL;
import com.google.gson.Gson;
import java.net.URLEncoder;
import java.io.InputStreamReader;
import java.io.*;
import javax.swing.*;
import java.awt.event.*;
import java.util.*;

public class Main {

  public static int min(int a,int b) {
    return a > b? b : a;
  }

  public static String corregir(String a,Set<String> col) {
      System.out.print("EL TAMAÑO ES: " + col.size());
      Iterator<String> it = col.iterator();
      String resp = a,aux = resp;
      int min = 30,dis,cont = 0;
      while(it.hasNext()) {
          cont++;
          resp = it.next().toString();
          System.out.print("El contador va en "  + cont + "\n");
          dis = edit_distance(a,resp);
          if(dis<min) {
              aux = resp; min = dis;
          }
          if(min==0) return resp;
      }
      return aux;
  }
  public static int edit_distance(String a,String b) {
    int n = a.length(), m = b.length(),costo;
    int[][] mat = new int[n+1][m+1];
    for(int i=0;i<=n;++i) mat[i][0] = i;
    for(int j=0;j<=m;++j) mat[0][j] = j;

    for(int i=1;i<=n;++i) {
      for(int j=1;j<=m;++j) {
        costo = a.charAt(i-1) == b.charAt(j-1)? 1 : 0;
        mat[i][j] = min(min(mat[i-1][j] + 1,mat[i-1][j-1] + costo),mat[i][j-1] + 1);
      }
    }

    return mat[n][m];
  }

  public static String resultados_de_la_busqueda(String search) {
    StringBuffer RES = new StringBuffer("<html>");
    String google = "http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q="; //El enlace para buscar en google
    String charset = "UTF-8";
    URL url;
    Reader reader;
    try {
      url = new URL(google + URLEncoder.encode(search, charset));
      try {
        reader = new InputStreamReader(url.openStream(), charset);
        GoogleResults results = new Gson().fromJson(reader, GoogleResults.class);
        for(int i=0;i<3;++i) {
          RES.append(results.getResponseData().getResults().get(i).getTitle());
          RES.append("<br/>");
          RES.append("<a href=\"");
          RES.append(results.getResponseData().getResults().get(i).getUrl());
          RES.append("\">" + results.getResponseData().getResults().get(i).getUrl() + "</a>");
          RES.append("<br/><br/>");
        }
      } catch(Exception e) {}
    } catch(Exception e) {}

    RES.append("</html>");
    return RES.toString();
  }

  public static void main(String[] args) throws Exception {
    Set<String> col = new HashSet<String>();
    FileInputStream fis = new FileInputStream("lemario.txt");
    Scanner cin = new Scanner(fis);

    while(cin.hasNext()) {
        col.add(cin.next());
    }
    cin.close();

    final Set<String> col2 = col;
    /*
    Iterator<String> it = col2.iterator();

    while(it.hasNext()) {
        System.out.print(it.next() + "\n");
    }*/
    //Corrector
    System.out.print(col.size());
    //Map<String,>
    JFrame jf = new JFrame("Programa");
    jf.setBounds(120,120,500,500);
    jf.setResizable(false);
    jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    final JTextField input = new JTextField();
    input.setBounds(25,25,300,25);

    final JLabel resultados = new JLabel();
    resultados.setBounds(120,120,200,200);

    JButton boton = new JButton("Buscar");
    ActionListener al = new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        if(! input.getText().equals("")) {
            String entrada = input.getText();
            entrada = corregir(entrada,col2);
            resultados.setText(resultados_de_la_busqueda(entrada));
        }
        else System.out.println("No hay entrada\n");
      }
    };
    boton.addActionListener(al);
    input.addActionListener(al);
    boton.setBounds(350,25,130,25);

    jf.add(boton);
    jf.add(input);
    jf.add(resultados);


    //resultados.setText(resultados_de_la_busqueda("taringa")); //setText(input.getText()); asumiendo que está bien escrito.
    //Para verificar si está bien escrito tenemos que pasarlo por el diccionario y verificar palabra por palabra
    //Bastante lento, pero qué se va a hacer :'D
    jf.add(input);
    jf.add(resultados);
    jf.setVisible(true);
  }
}
import java.net.URL;
导入com.google.gson.gson;
导入java.net.urlcoder;
导入java.io.InputStreamReader;
导入java.io.*;
导入javax.swing.*;
导入java.awt.event.*;
导入java.util.*;
公共班机{
公共静态最小整数(整数a、整数b){
返回a>b?b:a;
}
公共静态字符串corregir(字符串a,集合列){
系统输出打印(“EL-TAMAñO ES:+col.size());
迭代器it=列迭代器();
字符串resp=a,aux=resp;
int min=30,dis,cont=0;
while(it.hasNext()){
cont++;
resp=it.next().toString();
系统输出打印(“El contador va en”+cont+“\n”);
dis=编辑距离(a,resp);
如果(dis

if(min==0) return resp;

…在循环中,在迭代器遍历集合中的所有元素之前,将提前终止循环。因此,如果
edit\u distance
返回
0
,它将停止循环(并跳出函数,返回
resp
).

您当然可以将其简化为。您如何确定集合中不包含两个元素?我额外添加了一行以验证它包含了多少元素,每次运行程序时的输出是85930。