为什么这段代码不起作用?
println getValueFromMap(new HashMap().put("a","aaaaa"))
//Its calling Method
def String getValueFromMap(Map<String,String> mapObject){
return mapObject.get("a")
}
Run Code Online (Sandbox Code Playgroud)
而以下代码正在工作。
Map<String,String> fooMap=new HashMap()
fooMap.put("b","bbbbb")
println getValueFromMap(fooMap)
//Its calling Method
def String getValueFromMap(Map<String,String> mapObject){
return mapObject.get("b")
}
Run Code Online (Sandbox Code Playgroud)
请解释。
合并两张地图后,我注意到显示合并后的地图时,最后一张地图位于顶部:
Map<Integer, String> dataToSage = new HashMap<Integer, String>();
for(InterventionDTO i : list) {
Map<Integer, String> data = interfaceSageService.getDataToSendToSAGEFromIntervPlanMP(i.getIdintervention());
data.forEach((key, value) -> dataToSage.merge(key, value, (oldValue, newValue) -> {
return newValue;
}));
}
Run Code Online (Sandbox Code Playgroud)
它给出的输出为:
尽管在数据库中数据是有序的:
那么在合并过程中如何将最后合并的地图放在底部呢?
我一直在阅读 HashMap Collisions ,发现了两种不同的定义,但不确定哪一个是正确的。
其中最重要的答案是“当多个键散列到同一个存储桶时,就会发生冲突。”
我在同一问题中看到另一个答案,即“当两个不同的键碰巧具有相同的哈希码,或者两个具有不同哈希码的键碰巧映射到底层数组中的同一个存储桶时,就会发生冲突。”
对于#1,多个键可以散列到同一个存储桶,但具有不同的散列码。不同的HashCode可以是%或者&到同一个bucket,但是是不同的数字。
对于#2,它表示多个键具有相同的 hashCode,因此散列到同一个存储桶。
哪个是正确的定义?或者这两种情况有不同的术语吗?
编辑:不幸的是,我无法对澄清的答案发表评论,因为我没有要点。谢谢
我有hashmap,其键如"folder/1.txt,folder/2.txt,folder/3.txt",值包含这些文本文件数据.
现在我被困了.我想对此列表进行排序.但它不允许我这样做:(这是我的hashmap数据类型:
HashMap<String, ArrayList<String>>
Run Code Online (Sandbox Code Playgroud)
以下函数工作正常但是arraylist不适用于hashmap.
Collections.sort(values, Collections.reverseOrder());
Run Code Online (Sandbox Code Playgroud)
我也尝试了MapTree,但它也没有用,或者可能是我无法使它工作.我使用以下步骤使用maptree对代码进行排序
HashMap testMap = new HashMap();
Map sortedMap = new TreeMap(testMap);
Run Code Online (Sandbox Code Playgroud)
还有其他办法吗?
我有一个疑问,因为我的密钥是(文件夹/ 1.txt,文件夹/ 2.txt)可能是这个原因?
我有一个哈希映射.我在其中存储了12个不同的键值对.
前8个值存储得很好,但是当我尝试输入第9个值时,它会覆盖旧值.但是规模增加了.
如果我试图获得旧的价值观,我会得到null.我还检查了哈希映射表.只有8个值.旧值被覆盖.这里只有7个值,但大小为9.怎么可能?我能做错什么?
在java应用程序中,我有一个要求,用户将定义一个字符串值,然后继续将其他字符串值附加到原始值...
用户可以定义多个不同的命名字符串.
从hashmap,数组列表和链表中,我应该根据以下标准使用哪一个:
(1)大多数内存有效(2)每个字符串值最大可能空间
此外,所有3个选项(hashmap/array list/linked list)中单个字符串值的最大可能大小是多少?
我想为一个叫做Manager参数的类创建一个构造函数Object:
public class Manager{
public Manager(Object object){}
}
Run Code Online (Sandbox Code Playgroud)
在这个构造函数中,我想实例化一个使用String 和构造函数参数的非本地HashMap对象object,所以它将是这样的:
public class Manager{
private HashMap objects;
public Manager(Object object){
objects = new HashMap<String, object>(); /*note it's 'object' and not 'Object'*/
}
}
Run Code Online (Sandbox Code Playgroud)
因此,如果从示例中我将实例化一个经理,我将能够做这样的事情:
Manager myObjectManager = new Manager(MyObject); /* Create a new Manager instance with MyObject object for an example */
myObjectManager.getDescription(); /* Use a method from the MyObject class
Run Code Online (Sandbox Code Playgroud)
我知道我提供的示例没有使用正确的java语法,我只使用java来描述我正在寻找的东西.
我只是想解释一下,我想要一个可以通过使用构造函数参数实例化HashMap对象的构造函数.
编辑:我会尝试更好地解释,管理器类应该保存来自同一个类的对象并使用该字符串来查找它们.例如,我将使用spritesheet管理器,我将用它来查找播放器的spritesheet.
我有以下方式的哈希:
hash = {
:k1 => number1,
:k2 => number2
}
Run Code Online (Sandbox Code Playgroud)
我需要一种简单的方法将其转换为:
hash = {
:k1 => {:count => number1},
:k2 => {:count => number2}
}
Run Code Online (Sandbox Code Playgroud)
所以我可以将它与其他属性合并.
我想找到一个数组中的所有对,总结得到一个数字K.我正在考虑在java中使用HashMap技术.这个问题是数组可能有重复的条目.如何为同一个键存储多个值?我不想使用任何像MultiMap这样的外部库.比方说,数组是{2,4,3,2,1},数字k = 5.该技术应该给出总和为5的所有对的指数.输出应该是(0,2)(2,3)(1,4)
谢谢.
这是我写的代码
class NewClass {
public static void main(String[] args)throws Exception{
int arr[]={2,4,3,2,1},k=5;
HashMap<Integer,ArrayList<Integer>> map=new HashMap<>();
int i;
for(i=0;i<5;i++)
{
if(map.containsKey(arr[i])){
ArrayList<Integer> offset=map.get(arr[i]);
offset.add(i);
map.put(arr[i], offset);
}
else{
ArrayList<Integer> offset=new ArrayList<>();
offset.add(i);
map.put(arr[i], offset);
}
}
for(i=0;i<5;i++){
if(map.containsKey(k-arr[i])){
ArrayList<Integer> offset=map.get(arr[i]);
for(int a:offset){
System.out.println(i+" "+a);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
}
我得到的O/P是
0 0 0 3 1 1 2 2 3 0 3 3 4 4
你能告诉我这段代码有什么问题吗?请耐心等待我,因为我不熟悉编码.
以下是我的代码:
import java.util.HashMap;
public interface Action {
abstract void run(String s);
}
public static void main (String[] args){
HashMap<String, Action> actions = new HashMap<String, Action>();
actions.put("visible", new Action() {
public void run(String s) {
System.out.println("Running 'visible' on: " + s);
}
});
String input[];
input = new String[2];
input[0] = "sun";
input[1] = "visible";
actions.get(input[1]).run(input[0]);
}
Run Code Online (Sandbox Code Playgroud)
对于该行:" public static void main(String [] args){ "
我收到以下错误:
此行有多个标记
语法错误,插入"enum Identifier"以完成EnumHeader
令牌"]"上的语法错误,::此令牌后的预期
令牌"void",@ expected上的语法错误
代码对我来说似乎很好.有人可以帮我摆脱这个错误吗?