Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 哈希表中的最小字符串?_Java_Hashtable - Fatal编程技术网

Java 哈希表中的最小字符串?

Java 哈希表中的最小字符串?,java,hashtable,Java,Hashtable,这是我的密码。我不明白为什么它不工作,但它在使用字符串GF和LH时失败 private int N; // number of strings in the hash table private int M; // size of linear probing table private String[] keys; // the keys // Returns the minimum string in the table // Returns n

这是我的密码。我不明白为什么它不工作,但它在使用字符串GF和LH时失败

private int N;           // number of strings in the hash table
private int M;           // size of linear probing table
private String[] keys;   // the keys

// Returns the minimum string in the table
// Returns null if no such string exists
public String min() {
    // TODO
    String min = keys[0];
    for (int i=0;i<N;i++) {

        if (keys[i].compareTo(min) < 0) {
            min = keys[i];
        }
    }

    return min;
}

您可以尝试这样做:使用字符串长度

String arr[] = {"hei", "hvordan","as"};
String minni = Arrays.stream(arr).min((String a,String b)-> Integer.compare(a.length(),b.length())).get();
使用compareTo:

String arr[] = {"hei", "hvordan","as"};
String minni = Arrays.stream(arr).min(String::compareTo).get();
输出: 作为

完整方法:

private int N;           // number of strings in the hash table
private int M;           // size of linear probing table
private String[] keys;   // the keys


// Returns the minimum string in the table
// Returns null if no such string exists
String arr[] = {"hei", "hvordan","as"};
public String min() {
    String min = Arrays.stream(arr).min(String::compareTo).get();

    return min;
}

将for循环中的N更改为M。M是数组的实际大小,N是项数。然后,您必须考虑索引是空的情况,因为它是一个哈希表。祝你好运。

定义不工作不清除代码以查看errorreturn Collections.MinArray.asListkeys;更简单。您在哪里定义了N?小注:您可以在i=1而不是i=0开始循环,因为您已经为键[0]指定了min你认为OP为什么要使用字符串长度作为比较标准?@Tom建议使用mininum字符串,因为他没有提供太多关于如何比较它们的信息。OP提供了这些信息,只需查看代码键[i].compareTomin<0。他只是用普通的比较法进行比较,这不会给出最小的字符串。你有什么其他建议可以帮助他吗@汤姆