我正在为我的java类做一个作业,我们刚开始学习HashMaps,我们有这个作业,我们创建枚举数据并将其存储在一个hashmap中以便稍后打印出来.我可以想象的是能够打印HashMap的元素.到目前为止,这是我的项目:
public class Driver <enumeration>
{
private static HashMap<String, State> stateList = new HashMap<String, State>();
public static void main(String args[]) throws IOException
{
stateList.put("1", State.CA);
stateList.put("2", State.FL);
stateList.put("3", State.ME);
stateList.put("4", State.OK);
stateList.put("5", State.TX);
for(State value : stateList.values())
{
System.out.println(value);
}
}
}
public enum State
{
CA(new StateInfo("Sacramento", 38802500)), FL(new StateInfo("Tallahassee", 19893297)),
ME(new StateInfo("Augusta", 1330089)), OK(new StateInfo("Oklahoma City", 3878051)),
TX(new StateInfo(" Austin", 26956958));
private StateInfo info;
private State(StateInfo info)
{
this.info = info;
}
public StateInfo getInfo()
{
return info; …Run Code Online (Sandbox Code Playgroud) 我试图将a的输出传递ResultSet给Java HashMap.
Map<Integer, String> sIDpNumberHashMap = new HashMap<Integer, String>();
while (DBresult.next()) {
int sID = DBresult.getInt("slrid");
String pNumber = DBresult.getString("pNumber");
sIDpNumberHashMap.put(sID , pNumber );
System.out.println("Output1"+ sID + "\t" + pNumber + "\n");
}
System.out.println("Output2" + "\n" + sIDpNumberHashMap);
Run Code Online (Sandbox Code Playgroud)
而Output1显示所有记录(来自数据库).该put命令仅从ResultSet中获取最后一个值.
输出1:
502332262 101E2571G103
502332262 101E2571G103
502332262 116E3139P001
502332262 117E3640G025
502332262 314B7159G003
502332262 117E3640G025
Run Code Online (Sandbox Code Playgroud)
输出2:
{502332262=117E3640G025}
Run Code Online (Sandbox Code Playgroud)
如何使put命令迭代结果ResultSet?
如何修复我的代码,以便找到有效的(){} []?现在,它只返回true.
public static boolean isValid(String s){
HashMap<Character, Character> specialChar= new HashMap<>();
specialChar.put('{', '}');
specialChar.put('[',']');
specialChar.put('(',')');
Stack<Character> stk = new Stack<>();
for (int i=0; i<s.length(); i++){
if (specialChar.keySet().contains(s.charAt(i))){
stk.push(s.charAt(i));
}
else if (specialChar.values().contains(s.charAt(i))){
if (!stk.empty()) {
stk.pop();
}
}
}
return stk.isEmpty();
}
System.out.println(isValid("{}{lll}]"));
Run Code Online (Sandbox Code Playgroud) 在C++中我可以做到:
map<string, set<string>> v;
v["AHA"].insert("BA");
Run Code Online (Sandbox Code Playgroud)
在java我有:
HashMap<String, Set<String>> v = new HashMap<String, Set<String>>();
Run Code Online (Sandbox Code Playgroud)
我如何将"BA"作为c ++插入v ["AHA"]?
是的我试试这个:
Set<String> vs = V.get("B");
if (vs == null) vs = new HashSet<String>();
vs.add("V");
V.put("B", vs);
Run Code Online (Sandbox Code Playgroud)
但是很大
我有这个简单的代码,我发现对于最后一个数组,containsKey方法返回总是false.
int[] indices = new int[] { 1, 3, 5, 7, 9 };
Map<Integer, Integer> seen = new HashMap<>();
for (int i = 0; i < indices.length - 1; i++) {
seen.put(indices[i], i);
}
Run Code Online (Sandbox Code Playgroud)
除了以下所有其他都是
System.out.println("!!!!! " + seen.containsKey(9) );
Run Code Online (Sandbox Code Playgroud)
还有新的
int[] { 1, 3, 5, 7 };
Run Code Online (Sandbox Code Playgroud)
除了以下所有其他都是
System.out.println("!!!!! " + seen.containsKey(7) );
Run Code Online (Sandbox Code Playgroud)
这背后的逻辑是什么?
为什么我的Java HashMap不起作用?我的对象具有.equals平等意味着hashCode平等的属性。
您可以假定将对象添加到中之后,正在修改对象的字段HashMap。
考虑以下HashMap实现
HashMap<String,String> hashMap=new HashMap<>();
hashMap.put(new String("ABC"), "Hello");
hashMap.put("ABC", "Hello");
System.out.println(hashMap.size());
Run Code Online (Sandbox Code Playgroud)
如何size评估代码内部的代码如何返回1?但是,如果我使用StringBuffer而不是String代码返回值为2.这背后的原因是什么?
在使用HashMaps时,我发现了一个奇怪的行为,
import java.util.HashMap;
public class Demo {
public static void main(String[] ar) {
HashMap<String, Integer> ht = new HashMap<>();
ht.put("1", new Integer(1));
ht.put("2", new Integer(2));
ht.put("3", new Integer(3));
System.out.println(ht.get(2));
}
}
Run Code Online (Sandbox Code Playgroud)
上面的代码输出null.但是如果我将键作为整数1而不是字符串,则检索值.任何人都可以解释原因,为什么检索Integer值而不是String值.
我目前正在学习Java,已经有过Python经验.我理解Java中最接近Python字典的是HashMap,我很好奇是否有HashMapPython的dict.items()/ dict.values()/ dict.keys()等效 - 我明白HashMap有一个get()方法但我想要在不知道密钥的情况下检索值Map.
如果没有相应的,你怎么建议我解决这个问题?不要使用HashMap或?
If two hashmaps have exact same set of key-value pairs, will I always get data in same order while iterating on two hashmaps?
Map<String, String> map1 = new HashMap<>();
Map<String, String> map2 = new HashMap<>();
map1.put("a1","b1");
map1.put("a2","b2");
map1.put("a3","b3");
map2.put("a1","b1");
map2.put("a2","b2");
map2.put("a3","b3");
for (Map.Entry<String,String> e : map1.entrySet()) {
System.out.println(e.getKey());
}
for (Map.Entry<String,String> e : map2.entrySet()) {
System.out.println(e.getKey());
}
Run Code Online (Sandbox Code Playgroud)
If map1's iteration look like (a1,a2,a3), will map2's iteration also be like (a1,a2,a3)?
I know that bucket index is calculated using hash of …