Java 哈希表中的最小字符串?
这是我的密码。我不明白为什么它不工作,但它在使用字符串GF和LH时失败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
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。他只是用普通的比较法进行比较,这不会给出最小的字符串。你有什么其他建议可以帮助他吗@汤姆