繁体   English   中英

如何在Java中创建唯一ID

[英]How to create an unique ID in java

所以我必须做一些工作,而我对Java还是很陌生,我们才刚刚开始学习它。 而且我敢肯定,对于大多数人来说,我们只使用像“ pattern”,“ match”,arraylist这样的表达式。 以及它对于一个称为数据集成的类的工作,在该类中,我们基本上放置了Wikipedia链接,并放置了常规表达式,如果您搜索特定的作者,它将显示他们的信息,并将所有数据保存在XML文件中。 在该xml中,我们还必须为搜索的每个作者创建一个ID。 例如,如果您首先搜索JK_ROWLING,她将是01,然后我们搜索VERONICA_ROTH以便她是02,依此类推,当然也将其保存在文件中。

这是一些代码,供您理解工作和正则表达式,因此就像在这篇文章中,我搜索任何作者的生日

public static String procuraDataNascimento(String nome_escritor) throws IOException{

        String link = "https://pt.wikipedia.org/wiki/" + nome_escritor;
        String pesquisa =""; 
        HttpRequestFunctions.httpRequest(link,pesquisa,"ESCRITORES.txt");
        String Nasc_er0 = "<td scope=\"row\" style=\"vertical-align: top; text-align: left; font-weight:bold; padding:4px 4px 4px 0\">Data de nascimento</td>";
        String Nasc_er = "<td style=\"vertical-align: top; text-align: left; padding:4px\"><a href=\"/wiki/(.+)#Nascimentos\" title=\"(.+)\">(.+)</a> de <a href=\"/wiki/(.+)\" title=\"(.+)\">(.+)</a></td>";
        String Nasc_er2 = "<td style=\"vertical-align: top; text-align: left; padding:4px\">(.*)<a href=\"/wiki/(.+)#Nascimentos\" title=\"(.+)\">(.+)</a> de <a href=\"/wiki/(.+)\" title=\"(.+)\">(.+)</a>(.*)</td>";
        String Nasc_er3 = "<td style=\"vertical-align: top; text-align: left; padding:4px\">(.+)</td>";
        String Nascimento = null;
        Scanner ler = new Scanner(new FileInputStream("ESCRITORES.txt"));
        Pattern p0 = Pattern.compile(Nasc_er0);
        Pattern p = Pattern.compile(Nasc_er);
        Pattern p2 = Pattern.compile(Nasc_er2);
        Pattern p3 = Pattern.compile(Nasc_er3);
        while (ler.hasNextLine()) {
            String linha = ler.nextLine();
            Matcher m = p0.matcher(linha);
            if(m.find()){
                linha = ler.nextLine();
                Matcher t = p.matcher(linha);
                Matcher r = p2.matcher(linha);
                Matcher q = p3.matcher(linha);
                if (t.find()) {
                    Nascimento = t.group(2) + " de " +  t.group(5);
                } 
                else if (r.find()) {
                    Nascimento = r.group(3) + " de " +  r.group(5);   
                }
                else if(q.find()){
                    Nascimento = q.group(1);
                }
            }
        }
        ler.close();
        return Nascimento;
    }

当我把这个

{

String x = Wrapper_escritores.procuraDataNascimento("Roberto_Bolaño");

System.out.println(x);

}

例如,它显示了RobertoBolãno的出生日期。 我已经有一个带有构造函数,gets和sets的作者类。 你们可以帮忙吗? 您是否知道目前为止我们所学到的所有东西都是非常基础的呢? 谢谢!!

您可以生成一个UUID 类,该类表示一个不变的通用唯一标识符(UUID) ,例如

String name = "Roberto Bolãno";
UUID uuid = UUID.nameUUIDFromBytes(name.getBytes(Charset.forName("UTF-8")));
System.out.println(uuid.toString());

哪个输出

4fb97aea-d741-3d78-a037-0eaa8848fc7a

或者,创建一个Map<Integer, String> (请参阅Tutorial )并在添加一个新作者时增加一个计数器(如果您的应用程序需要可重启,则还需要保留这些值)。

使用link作为ID。 假设Wikipedia URL对于作者而言不变,则它们随着时间的推移是稳定的。 另外,保证不同的作者具有不同的Wikipedia URL。

如果您需要ID为字母数字,请通过类似SHA-1的加密哈希函数运行link ,并将结果byte[]打印为十六进制字符串。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM