我想遍历一个包含键/值对的文件,并将它们放入一个映射中。
该文件包含如下值:
forward 5
up 4
down 3
down 6
forward 4
...
下面是我的代码:
java prettyprint-override"> private static void depthPosition() throws IOException {
BufferedReader bufferedReader = new BufferedReader(new FileReader("/Users/WorkAcc/Desktop/file.txt"));
String lines;
Map<String, Integer> instructions = new HashMap<>();
String [] pair;
while ((lines = bufferedReader.readLine()) != null) {
pair = lines.split(" ");
instructions.put(pair[0], Integer.valueOf(pair[1]));
}
System.out.println(instructions);
}
}
我遇到的问题是,名为instructions
的映射没有从文件中添加新值,它在大小为3时停止,不确定原因。非常感谢您的帮助。谢谢
正如评论中提到的,地图中不允许有重复的密钥。
如果你想读取这些字符串并保持顺序(这看起来很可能),你可以这样做。
记录
(不可变类)来保存方向和数量。也可以使用常规类。List
来保存记录。在本例中是一个ArrayListString s = "forward 5\n up 4\n down 3\n down 6\n forward 4\n";
record Info(String direction, int amount){
@Override
public String toString() {
return "[%s, %s]".formatted(direction, amount);
}
}
Scanner input = new Scanner(s);
List<Info> list = new ArrayList<>();
while(input.hasNextLine()) {
list.add(new Info(input.next(), input.nextInt()));
input.nextLine(); // consume end of line marker
} while(input.hasNextLine());
list.forEach(System.out::println);
印刷品
[forward, 5]
[up, 4]
[down, 3]
[down, 6]
[forward, 4]
你也可以像这样进行交互,得到单独的值。
for (Info info : list) {
System.out.println(info.direction() + " " + info.amount());
}
印刷品
forward 5
up 4
down 3
down 6
forward 4
注:上述解决方案假定每行定义良好,每行包含一个String
和一个int
,由一个或多个空格分隔。否则,可能会引发异常。
这是一个如何计算你在评论中指出的内容的示例。
public void depthPosition() throws IOException {
int value = 5;
List<Instruction> instructions = readInstructionsFromFile("/Users/WorkAcc/Desktop/file.txt");
int result = calculateDepthPosition(instructions, value);
System.out.println("result is: "+result);
}
private List<Instruction> readInstructionsFromFile(String filePath) throws IOException {
BufferedReader bufferedReader = new BufferedReader(new FileReader(filePath));
String line;
Instruction instruction;
List<Instruction> instructions = new ArrayList<>();
String[] pair;
while ((line = bufferedReader.readLine()) != null) {
pair = line.split(" ");
instruction = new Instruction(pair[0], Integer.valueOf(pair[1]));
instructions.add(instruction);
}
return instructions;
}
private int calculateDepthPosition(List<Instruction> instructions, int value){
int nextValue = value;
int result = value;
for (Instruction instruction : instructions) {
nextValue = instruction.apply(nextValue);
result = Math.min(result, nextValue);
}
return result;
}
public static class Instruction {
private String type;
private int amount;
public Instruction(String type, int amount) {
this.type = type;
this.amount = amount;
}
public int apply(int value) {
switch (type) {
case "forward":
return value + amount;
case "down":
return value - amount;
case "up":
return value ?? amount;
default:
return value;
}
}
}
我有一个jar文件,其中有一些映射文件,我想添加作为hibernate.cfg.xml中的映射资源,因为我在org.hibernate.cfg.comfiguration中添加了jar。 在hibernate.cfg.xml中我添加了… 当我执行java应用程序时,我得到了这个异常... 有人能帮我吗?
我试图创建一个人口的叶绿素地图在HighMaps使用自定义Geojson文件。 我有两个Geojson文件-第一个包含县级数据,第二个包含县域内较小的城镇区域。 我试图将县级边界添加到我的叶绿体地图中,类似于以下示例:http://www.highcharts.com/maps/demo/us-counties 我能够让小区域以适当的颜色渐变正确绘制;然而,县边界没有出现在我的地图上。 我的js代
问题内容: 我试图或多或少地使用Java API 重新创建此示例。 我认为我所需要的只是向索引添加映射,但是Java API文档尚不清楚如何执行此操作。 请告诉我如何用Java创建映射,该映射与文档中的示例等效: 这是我的代码: 问题答案: 终于,经过一天的谷歌搜索获得了回报。坦率地说,用于Elasticsearch的Java API文档可以使用一些端到端示例,更不用说JavaDoc … 这是一个
我想知道如何使用ngx awesome uploader将图像从Angular上传到azure storage blob。 我希望能够使用此库将其直接从angular发送到azure存储blob。我已经能够将它发送到我的nodejs后端没有问题,但是直接将它发送到blob存储对我来说是一个挑战。有人能提供一个如何做到这一点的工作示例吗?谢谢你的帮助! ngx真棒上传器的stackblitz示例 该
问题内容: 有人可以解释在xml映射文件中使用逆函数的方法吗,我正在阅读本教程,但无法理解在映射文件中的逆函数的用法? 谢谢 问题答案: 逆仅决定关系中的哪个实体负责更新数据库以反映关联。 假设一对多的双向关联。代码A和B中有两个类,A包含一组B,B维护对A的引用。在数据库级别,只有一个外键要更新,B的表包含一个到主键的列的A。 在这种情况下,假设我们将inverse = true放在集合侧。这意
并将属性加载到映射中,结果为: 有什么想法如何创建一个映射策略吗?