Java 使用新的不同索引重新定位数组中的元素

Java 使用新的不同索引重新定位数组中的元素,java,arrays,loops,project,Java,Arrays,Loops,Project,我正在用Java为我的课程做一个基本的哈希表项目,我已经很沮丧了。 我只想知道如何在数组中重新定位元素(字符串)。如果将哈希代码除以数组大小得到新的索引,我将如何将元素置于新的位置。此外,当发生冲突时(例如2个字符串具有相同的索引),倾向于将数组的大小加倍,从数组中所有现有的单词中获取新的索引值,并将其放回新索引中 我真的需要在4月30日之前得到答案,我真的希望一些好的人能回答我的问题,因为我从本月初就一直在做这件事。我写了这段代码,其中包含一个字符串数组,需要根据您的方法重新排序,并返回一

我正在用Java为我的课程做一个基本的哈希表项目,我已经很沮丧了。 我只想知道如何在数组中重新定位元素(字符串)。如果将哈希代码除以数组大小得到新的索引,我将如何将元素置于新的位置。此外,当发生冲突时(例如2个字符串具有相同的索引),倾向于将数组的大小加倍,从数组中所有现有的单词中获取新的索引值,并将其放回新索引中


我真的需要在4月30日之前得到答案,我真的希望一些好的人能回答我的问题,因为我从本月初就一直在做这件事。

我写了这段代码,其中包含一个字符串数组,需要根据您的方法重新排序,并返回一个HashMap(
map
)其中键是一个字符串,其值是它的新索引,始终根据您的方法计算

我临时创建了
hashcode(String str)
函数,您必须插入自己的函数

现在,您需要做的唯一一件事就是研究
映射
,以便创建新的重新排序字符串数组

代码

public static Map<String, Integer> newIndexesMap(String[] a) {
        Map<String, Integer> map = new HashMap<>();
        int length = a.length;
        for (int i = 0; i < a.length; i++) {
            int newIndex = hashcode(a[i]) % length;
            // Check that the new index is not already used by another key
            if (map.containsValue(newIndex)) {
                length = length * 2;
                i = -1;
                map.clear();
            } else
                map.put(a[i], newIndex);
        }
        return map;
}
公共静态映射newindexmap(字符串[]a){
Map Map=newhashmap();
int length=a.length;
for(int i=0;i
你能分享你的代码吗?如果你已经为此工作了25天,你肯定有一些代码要分享。还有一件事,我们不能使用内置的hashcode函数,只能使用循环和数组。那么,在你的情况下,最好的办法就是编写你自己的hashcode函数。它接受一个元素作为参数,它控制是否可以对该元素进行散列,它返回正确的散列。如果您有更多问题,请让我知道,如果没有,请将您的问题标记为已解决,谢谢!这正是我需要的