我是Java的新手,我正在尝试使用以下工作代码并将我的ArrayList转换为Hashmap。我的困惑是因为它们根本不同。由于使用键/值对的hashmap我不太了解我这样做,因为我已经工作的程序。对不起,如果这是一个愚蠢的问题,我想我很困惑我需要做什么。
这是我使用ArrayList的类:
感谢您的帮助。
import java.util.ArrayList;
import java.util.Scanner;
//new class ArrayMessage
public class ArrayMessage {
//new method shoutOutCannedMethod returning a String
public String shoutOutCannedMessage() {
// create some variables
int arraySize = 10;
String displayUserMessage = "";
String userMessage = "";
String goAgain = "yes";
// setup scanner to store input
Scanner input = new Scanner(System.in);
// create arrayList
ArrayList<String> message = new ArrayList<String>();
// start loop
while (!goAgain.equals("no")) {
// clear out arrayList
message.clear();
// ask the user for 10 messages as long as the counter is less than
// the size of the array
for (int counter = 0; counter < arraySize; counter++) {
System.out.printf(counter + 1 + ": Please enter a message: ");
// save user message to userMessage
userMessage = input.nextLine();
// add users message to arraylist
message.add(userMessage);
}
// ask the user if they want to to load different messages into
// arraylist
System.out.print("Messages have been loaded? Would you like to reload? Type 'yes' or 'no': ");
goAgain = input.nextLine(); // store input
}
// ask the user to choose which message they want displayed
System.out.print("Please enter the number of the message you would like displayed: ");
userMessage = input.nextLine();
// store users message into variable to be used later
displayUserMessage = message.get(Integer.parseInt(userMessage) - 1);
input.close();
// return userMessage
return displayUserMessage;
}
}
这是我的主要课程:
public class ShoutBox {
//main method
public static void main(String[] args) {
//call ArrayMessage class
ArrayMessage myMessage = new ArrayMessage();
//call shoutOutCannedMessage method
String userMessage = myMessage.shoutOutCannedMessage();
// display message selected by user
System.out.printf("Your selected value is " + userMessage + "\n");
}
}
答案 0 :(得分:2)
我假设您将使用ArrayList中元素的索引作为键,并将数组中的实际元素用作HashMap中的值。
希望有所帮助!
答案 1 :(得分:0)
如名称所示,ArrayList是一个Elements列表(内部使用一个数组,有时会调整大小)。
另一方面,HashMap是元素和键之间的映射。这意味着:你没有列表,只有一个键列表,每个键都指向一个元素(内部表示有点困难)。所以这不是一个简单的列表,不应该用于列出内容,而是在对象之间创建链接。例如,如果要将游戏的Player对象分配给玩家的聊天名称,可以创建一个HashMap,它将Strings作为键,将Players作为对象保存:
Ann -> Player instance of Ann
Bob -> Player instance of Bob
Clara -> Player instance of Clara
...
例如,当您创建面向播放器的聊天命令时,这很有用:
/teleportto Clara
现在你可以像这样得到Clara的玩家对象:
playerHashMap.get("Clara")
其中clara是聊天的参数,此调用将返回Clara的玩家实例。
所以不要用地图替换列表,这些是不同的数据结构。