我需要将HashMap转换为String数组,以下是我的Java代码
import java.util.HashMap;
import java.util.Map;
public class demo {
public static void main(String[] args) {
Map<String, String> map1 = new HashMap<String, String>();
map1.put("1", "1");
map1.put("2", "2");
map1.put("3", "3");
String[] str = (String[]) map1.keySet().toArray();
for(int i=0; i<str.length;i++) {
System.out.println(str[i]);
}
}
}
当我运行代码时,得到以下内容ClassCastException
。
Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;
at demo.main(demo.java:17)
toArray()
返回Object[]
,而不管泛型。您可以改用重载的变体:
String[] str = map1.keySet().toArray(new String[map1.size()]);
另外,由于Set
的toArray
方法不能保证顺序,并且您使用数组进行的所有操作都会打印出值,因此可以keySet()
直接迭代:
for (String str: map1.keySet()) {
System.out.println(str);
}
编辑:只是为了完成图片,在Java 8中,该foreach
方法可用于使代码更加优雅:
map1.keySet().forEach(System.out::println);
问题内容: 我想在休眠状态查询两个表。用户实体中的featch 3表(User-Role-Profile)。用hql查询: 并运行查询: userentity类:此类是geteer和seter: userEntity.hbm.xml的休眠映射 和类hibernateutil创建会话: 问题答案: 因为使用的是多选投影,所以实际上是在获取对象数组,因此需要将查询结果处理逻辑更改为:
问题内容: 我正在运行以下查询。它显示一条错误消息。如何解决这个错误? 错误是: 问题答案: 您可以这样写: 已经是一个字符串列表,因为您只选择了一列。 此外,正如Thilo的答案所暗示的那样,您可以将结果直接转换为a 而不是使用。
问题内容: 码: CrbtSubMasterDemo 与数据库一起映射。当我尝试运行它时,它显示以下异常: 问题是query.list()返回pojo类的对象列表。那为什么是这个异常。我是Hibernate的新手,很抱歉这是一个愚蠢的问题。 问题答案: 先生,许多用户都面临这种需求。Hibernate具有ResultTransformer来在Object中转换hql / sql。 它将您查询转换为
问题内容: 我想在hibernate状态查询两个表。用户实体中的featch 3表(User-Role-Profile)。用hql查询: 并运行查询: userentity类:此类是geteer和seter: userEntity.hbm.xml的hibernate映射 和类hibernateutil创建会话: 问题答案: 由于使用的是多选投影,因此实际上是在获取对象数组,因此需要将查询结果处理逻
问题内容: 我已经编写了一个通用类,下面是该类的构造函数。我想像这样写 由于我不知道运行时的泛型类型,因此它将引发异常。 有什么办法解决这些问题?E的声明是 这就是我要打电话的方式 更新 家伙,谢谢您的帮助。我在搞泛型,所以问题就被创建了。这是所有导致问题的代码- 更新2 :似乎除了传递下面的答案中提到的类类型外,我们无法做到这一点。 问题答案: 这是重现异常所需的最最少的代码。 Java泛型使用