Java 计算每个索引的节点数+;托斯特林
所以我想知道是否有一种方法可以打印出列表中哪个索引冲突最多?除此之外,我还想知道,为我的LinkedList生成toString()的最佳方法是什么?我已经尝试了几次LinkedList toString的默认实现,但我不太明白如何实现它 提前谢谢 代码:Java 计算每个索引的节点数+;托斯特林,java,hashmap,Java,Hashmap,所以我想知道是否有一种方法可以打印出列表中哪个索引冲突最多?除此之外,我还想知道,为我的LinkedList生成toString()的最佳方法是什么?我已经尝试了几次LinkedList toString的默认实现,但我不太明白如何实现它 提前谢谢 代码: 静态LinkedList哈希表[]=新建LinkedList[100]; 静态类节点{ int值; int键; @凌驾 公共字符串toString(){ 返回“值:”+值+“+”键:“+键; } } 公共静态void main(字符串[]ar
静态LinkedList哈希表[]=新建LinkedList[100];
静态类节点{
int值;
int键;
@凌驾
公共字符串toString(){
返回“值:”+值+“+”键:“+键;
}
}
公共静态void main(字符串[]args)引发FileNotFoundException{
文件f=新文件(“Ex5.txt”);
扫描仪扫描=新扫描仪(f);
如果(f.exists()==false){
System.out.println(“文件不存在或找不到”);
系统出口(0);
}
对于(int i=0;i<100;i++){
哈希表[i]=null;
}
while(scan.hasNextInt()){
int n=scan.nextInt();
插入(n,hashFunction(n));
}
对于(int i=0;i<100;i++){
System.out.println(哈希表[i]);
}
int emptyEntries=0;
对于(int i=0;i<100;i++){
if(哈希表[i]==null){
空入口+=1;
}
}
System.out.println(“空条目数:“+emptyEntries”);
}
公共静态void插入(int键,int值){
int index=hashFunction(值);
LinkedList items=哈希表[索引];
if(items==null){
items=newlinkedlist();
节点项=新节点();
item.key=key;
项目价值=价值;
项目。添加(项目);
哈希表[索引]=项;
}否则{
用于(节点项:项){
如果(item.key==key){
项目价值=价值;
返回;
}
}
节点项=新节点();
item.key=key;
项目价值=价值;
项目。添加(项目);
}
}
公共静态int哈希函数(int值){
int hashKey=值%100;
返回hashKey;
}
类是对象。LinkedList是一个类。所有对象都扩展了java.lang.Object,您始终可以对它们调用Object.toString()
,但您可能要寻找的是打印所有值的方法。在这种情况下,最好使用for循环:
for(int i=0;iYou在哈希表存在时使用LinkedList作为哈希表。为什么?根据我的作业要求,除了LinkedList+文件开启器/读取器之外,我不能使用任何库,我应该提到这一点。抱歉。file f=new file(“Ex5.txt”);
您尝试在创建后立即读取此空文件。您将不会得到任何输入。哦,我忘了,它在我的计算机上,但每行上只有一个随机整数,共100行。如果您想测试代码,您可以少做几行,效果相同。下次,请在代码中添加更多注释,以突出显示响应的代码部分对于这个问题,我负责重要的任务。就我个人而言,我很难理解你的代码。这不是我想要的,我需要找到哈希表的哪个索引[]拥有最多的冲突,也有很多冲突。除此之外,我认为Object.toString不起作用,因为我必须打印数组实例而不是对象。这些值仍然打印得很奇怪。首先,(你的单词经过0次修改)还有,我想知道,生成toString()的最佳方法是什么对于我的LinkedList?
冲突是什么意思?我如何准确地找到与代码中信息的冲突?如果我最初发布的代码是运行的,那么数组将被打印出来,每行有多个节点,我需要找到一种方法来打印/找到其中节点最多的一个。更新:我设法获得了toString()通过为节点本身实现它来工作。错过了这个想法lol。
static LinkedList<Node> hashTable[] = new LinkedList[100];
static class Node {
int value;
int key;
@Override
public String toString() {
return "Value: " + value + " " + "Key: " + key;
}
}
public static void main(String[] args) throws FileNotFoundException {
File f = new File("Ex5.txt");
Scanner scan = new Scanner(f);
if (f.exists() == false) {
System.out.println("File doesn't exist or could not be found.");
System.exit(0);
}
for (int i = 0; i < 100; i++) {
hashTable[i] = null;
}
while (scan.hasNextInt()) {
int n = scan.nextInt();
insert(n, hashFunction(n));
}
for (int i = 0; i < 100; i++) {
System.out.println(hashTable[i]);
}
int emptyEntries = 0;
for (int i = 0; i < 100; i++) {
if (hashTable[i] == null) {
emptyEntries += 1;
}
}
System.out.println("Number of empty entries: " + emptyEntries);
}
public static void insert(int key, int value) {
int index = hashFunction(value);
LinkedList<Node> items = hashTable[index];
if (items == null) {
items = new LinkedList<>();
Node item = new Node();
item.key = key;
item.value = value;
items.add(item);
hashTable[index] = items;
} else {
for (Node item : items) {
if (item.key == key) {
item.value = value;
return;
}
}
Node item = new Node();
item.key = key;
item.value = value;
items.add(item);
}
}
public static int hashFunction(int value) {
int hashKey = value % 100;
return hashKey;
}