List<String> grids 转map
时间: 2024-10-12 07:07:44 浏览: 16
将一个 `List<String>` 类型的二维网格转换成一个 `Map`(通常是指 `HashMap` 或者 `Map<Integer, String>` 这样的键值对映射),你可以通过遍历列表,并为每个元素创建对应的键值对。假设列表里的字符串是按照行索引和列索引来组织的,例如每一行是一个逗号分隔的值,可以这样做:
```java
import java.util.HashMap;
import java.util.Map;
public Map<Integer, String> convertGridToMap(List<String> grids) {
Map<Integer, String> map = new HashMap<>();
int rowIndex = 0; // 假设行从0开始
for (String row : grids) {
String[] values = row.split(",");
for (int i = 0; i < values.length; i++) {
map.put(rowIndex * gridWidth + i, values[i]); // 假设每行有gridWidth个元素
}
rowIndex++;
}
return map;
}
```
这里假设你知道每行有多少个元素(`gridWidth`)。如果你需要处理不定长度的行,你需要另外的方式来确定键值对。
相关问题
private void setPath(int time) { if (time < person.totalTime) { Node personNode = person.getPersonCoordinateAtTimeT(time + 1); grids[personNode.x][personNode.y].setType(Type.BLANK); grids[personNode.x][personNode.y].repaint(); grids[personNode.x][personNode.y].revalidate(); List<Node> lastList = person.getStepListAtTimeT(time + 1); for (Node node : lastList) { int x = node.x; int y = node.y; if (x == person.getPersonCoordinateAtTimeT(time).x && y == person.getPersonCoordinateAtTimeT(time).y) { continue; } grids[x][y].setType(Type.BLANK); grids[x][y].repaint(); grids[x][y].revalidate(); } } Node personNode = person.getPersonCoordinateAtTimeT(time); grids[personNode.x][personNode.y].setType(Type.PERSON); grids[personNode.x][personNode.y].repaint(); grids[personNode.x][personNode.y].revalidate(); List<Node> list = person.getStepListAtTimeT(time); for (Node node : list) { int x = node.x; int y = node.y; if (x == person.getPersonCoordinateAtTimeT(time).x && y == person.getPersonCoordinateAtTimeT(time).y) { continue; } grids[x][y].setType(Type.STEP); grids[x][y].repaint(); grids[x][y].revalidate(); } }帮我写一下注释 用markdown
```java
/**
* 该方法用于设置路径
* @param time 时间参数,用于计算人物在该时间下的坐标
*/
private void setPath(int time) {
if (time < person.totalTime) {
// 获取人物在该时间下的坐标,并将该坐标所在的格子类型设置为空白格子
Node personNode = person.getPersonCoordinateAtTimeT(time + 1);
grids[personNode.x][personNode.y].setType(Type.BLANK);
grids[personNode.x][personNode.y].repaint();
grids[personNode.x][personNode.y].revalidate();
// 获取人物在该时间点之前的所有步骤,将每个步骤所在的格子类型设置为空白格子
List<Node> lastList = person.getStepListAtTimeT(time + 1);
for (Node node : lastList) {
int x = node.x;
int y = node.y;
if (x == person.getPersonCoordinateAtTimeT(time).x
&& y == person.getPersonCoordinateAtTimeT(time).y) {
continue;
}
grids[x][y].setType(Type.BLANK);
grids[x][y].repaint();
grids[x][y].revalidate();
}
}
// 获取人物在该时间下的坐标,并将该坐标所在的格子类型设置为人物类型
Node personNode = person.getPersonCoordinateAtTimeT(time);
grids[personNode.x][personNode.y].setType(Type.PERSON);
grids[personNode.x][personNode.y].repaint();
grids[personNode.x][personNode.y].revalidate();
// 获取人物在该时间点之前所有的步骤,将每个步骤所在的格子类型设置为步骤类型
List<Node> list = person.getStepListAtTimeT(time);
for (Node node : list) {
int x = node.x;
int y = node.y;
if (x == person.getPersonCoordinateAtTimeT(time).x
&& y == person.getPersonCoordinateAtTimeT(time).y) {
continue;
}
grids[x][y].setType(Type.STEP);
grids[x][y].repaint();
grids[x][y].revalidate();
}
}
```
阅读全文