Java 是否可以使用特定表单打印hashmap的键?

Java 是否可以使用特定表单打印hashmap的键?,java,junit,hashmap,Java,Junit,Hashmap,我将使用Junit测试,java中的hashmap。 我的代码如下所示: HashMap <String,String> var = new HashMap <String,String>(); var.put("key1","value1"); var.put("key2","value2"); var.put("key3","value3"); var.put("key4","value4"); Iterator<String> itKey = var

我将使用Junit测试,java中的hashmap。 我的代码如下所示:

HashMap <String,String> var = new HashMap <String,String>(); 
var.put("key1","value1");
var.put("key2","value2");
var.put("key3","value3");
var.put("key4","value4");

Iterator<String> itKey = var.keySet().iterator();

String Existing_coaches = "" ;

 while(itKey.hasNext()){

 String key = (String)itKey.next();

// Existing_coaches = i use concat function 

    } 
 return  Existing_coaches ;
HashMap var=newhashmap();
认沽价值(“关键1”、“价值1”);
认沽价值(“关键2”、“价值2”);
认沽价值(“第3项”、“第3项价值”);
var.put(“关键4”、“价值4”);
迭代器itKey=var.keySet().Iterator();
字符串现有_=”;
while(itKey.hasNext()){
String key=(String)itKey.next();
//现有_coach=我使用concat函数
} 
返回现有的培训车;
我要做的是按以下形式返回ITKEY:

键1、键2、键3、键4

我们从第一个键+逗号等开始

所以我需要知道第一把钥匙和最后一把钥匙是什么


你知道怎么做吗?

用逗号和空格连接键:

import java.util.*;

public class MyClass {
    public static void main(String args[]) {
        Map<String, String> m = new LinkedHashMap<>();
        m.put("key1", "val1");
        m.put("key2", "val2");
        m.put("key3", "val3");
        m.put("key4", "val4");
        System.out.println(String.join(", ", m.keySet()));
    }
}

用逗号和空格连接键:

import java.util.*;

public class MyClass {
    public static void main(String args[]) {
        Map<String, String> m = new LinkedHashMap<>();
        m.put("key1", "val1");
        m.put("key2", "val2");
        m.put("key3", "val3");
        m.put("key4", "val4");
        System.out.println(String.join(", ", m.keySet()));
    }
}

如果您不熟悉String.join,请使用第一个,如果您喜欢,请使用第二个。两种方法都有效:

import java.util.HashMap;
import java.util.Iterator;

public class Hash {
    public static void main(String args[]) {
        HashMap <String, String> var = new HashMap <String, String>(); 

        var.put("A", "1");
        var.put("B", "2");
        var.put("C", "3");
        var.put("D", "4");

        System.out.println("method 1: " + myHash(var));
        System.out.println("method 2: " + myHash2(var));
    }

    public static String myHash(HashMap var) {
        Iterator<String> itKey = var.keySet().iterator();
        String Existing_coaches = "" ;

        while(itKey.hasNext()){
            String key = (String)itKey.next();
            Existing_coaches = Existing_coaches + key + ", ";
        }

        return  Existing_coaches.substring(0, Existing_coaches.length() -2) ;
    }

    public static String myHash2(HashMap var) {
        return String.join(", ", var.keySet());
    }
}

如果您不熟悉String.join,请使用第一个,如果您喜欢,请使用第二个。两种方法都有效:

import java.util.HashMap;
import java.util.Iterator;

public class Hash {
    public static void main(String args[]) {
        HashMap <String, String> var = new HashMap <String, String>(); 

        var.put("A", "1");
        var.put("B", "2");
        var.put("C", "3");
        var.put("D", "4");

        System.out.println("method 1: " + myHash(var));
        System.out.println("method 2: " + myHash2(var));
    }

    public static String myHash(HashMap var) {
        Iterator<String> itKey = var.keySet().iterator();
        String Existing_coaches = "" ;

        while(itKey.hasNext()){
            String key = (String)itKey.next();
            Existing_coaches = Existing_coaches + key + ", ";
        }

        return  Existing_coaches.substring(0, Existing_coaches.length() -2) ;
    }

    public static String myHash2(HashMap var) {
        return String.join(", ", var.keySet());
    }
}
Map Map=newlinkedhashmap();
//方法1:使用高级for(foreach)循环
StringBuilder键串=新建StringBuilder();
for(字符串键:map.keySet()){
keyString=keyString.append(key+“,”);
}
String resultStr=keyString.toString().substring(0,keyString.toString().length()-2);//逗号和空格减去2
System.out.println(resultStr);
//方法2:用于循环
StringBuilder keyString2=新的StringBuilder();
Object[]keySet=(Object[])map.keySet().toArray();
对于(int i=0;i
Map Map=newlinkedhashmap();
//方法1:使用高级for(foreach)循环
StringBuilder键串=新建StringBuilder();
for(字符串键:map.keySet()){
keyString=keyString.append(key+“,”);
}
String resultStr=keyString.toString().substring(0,keyString.toString().length()-2);//逗号和空格减去2
System.out.println(resultStr);
//方法2:用于循环
StringBuilder keyString2=新的StringBuilder();
Object[]keySet=(Object[])map.keySet().toArray();
对于(int i=0;i
String.join(“,”,var.keySet())
@shmosel:但是在哪里?为了澄清,当你说“第一个键”时,你是指(1)插入的第一个键还是(2)按字母顺序排列的第一个键?谢谢
String.join(“,”,var.keySet())
@shmosel:但是在哪里?为了澄清,当你说“第一个键”时,你是指(1)插入的第一个键还是(2)按字母顺序排列的第一个键?谢谢@欧内斯特:不,不是。看一看,它不会按插入的顺序返回结果。很抱歉,我不清楚这是否是需要的。我知道,在你的问题中,“第一个键”实际上可能意味着“插入的第一个”,但它也可以按字母顺序读作第一个键,或者只是一般的第一个输出。您可能知道,
HashMap
s本质上是无序的,但是
LinkedHashMap
s按插入顺序迭代。我编辑了答案来说明这一点。另外
TreeMap
按字母顺序迭代键(如果它们是字符串)。@ernest_k不,不是。看一看,它不会按插入的顺序返回结果。很抱歉,我不清楚这是否是需要的。我知道,在你的问题中,“第一个键”实际上可能意味着“插入的第一个”,但它也可以按字母顺序读作第一个键,或者只是一般的第一个输出。您可能知道,
HashMap
s本质上是无序的,但是
LinkedHashMap
s按插入顺序迭代。我编辑了答案来说明这一点。另外,
TreeMap
按字母顺序迭代键(如果它们是字符串)。我不明白,我没有按插入顺序得到结果。我做了,但当我尝试对代码执行相同操作时,我总是以插入的相反顺序得到结果,我有一个添加键和值的测试,在那之后,另一个测试显示它是否等于key1,key2,key3,key4,但是当我得到key4,key3,key2,key1Did时它失败了。你知道HashMap不能保证顺序吗?映射不是有序的数据结构,因此您不能相信输出将具有您想要的顺序。如果你想这样做,你必须使用LinkedHashMap或TreeMap(在最后一种情况下,你仍然需要处理键)。这让它更清楚,好吧,我会尝试使用LinkedHashMap代替。好的,我想你明白了。我不明白,我没有按照插入的顺序得到结果,但当我尝试对代码做同样的操作时,我总是以插入的相反顺序得到结果,我有一个添加键和值的测试,然后另一个测试显示它是否等于键1、键2、键3,但是当我得到key4,key3,key2,key1Did时它失败了。你知道HashMap不能保证顺序吗?映射不是有序的数据结构,因此您不能相信输出将
       Map<String, String> map = new LinkedHashMap<>();

       // Approach 1 : use advanced for (foreach) loop
        StringBuilder keyString = new StringBuilder();
        for(String key: map.keySet()){
            keyString = keyString.append(key + ", ");
        }
        String resultStr = keyString.toString().substring(0, keyString.toString().length()-2); // deducting 2 for comma and space
        System.out.println(resultStr);

        // Approach 2: use for loop
        StringBuilder keyString2 = new StringBuilder();
        Object[] keySet =  (Object[]) map.keySet().toArray();
        for(int i=0; i < keySet.length; i++) {
            if(i == keySet.length-1) {
                keyString2 = keyString2.append(keySet[i].toString());
            } else {
                keyString2 = keyString2.append(keySet[i].toString() + ", ");
            }

        }
        System.out.println(keyString2.toString());

        // Approach 3: Use String join
        System.out.println(String.join(", ", map.keySet()));