又上班了~今天应该心情会好点吧!

博主这几日状态不佳,上班时收到女友在QQ上的消息,得知她心情变好。当天是博主农历生日,感慨自己23岁仍一事无成,决定加倍努力,同时希望女友别贪玩,两人能相伴更久。

         这几天都在颓废中度过~在郁闷中浪费~今天一大早起来天气不错,感觉头脑清晰多了~刚来上班就见女朋友在QQ上发来的消息,说她心情好多了,我想我心情也会好的吧!

        希望她能够别在那么贪玩,希望她能够过得更好更充实,希望我们能走得更远、走得更愉快,希望我们一路带着笑声走到老!

       差点忘记了,今天老历是我的生日~ 晕`  呵呵~很奇怪的,每年的清明节左右我的生日就到了.......5555555555又一不小心就23岁了,哎,还是一事无成!  看来得加倍努力了.。

使用 `Map` 来记录空单元格的位置确实是一个不错的选择,尤其是当我们需要根据行号快速查找对应的列号时。相比于使用列表存储字符串形式的位置信息,`Map` 可以更高效地组织数据结构,并且便于后续操作。 以下是改用 `Map` 记录空单元格位置的代码实现: ```java // 使用 Map<Integer, List<Integer>> 来记录空单元格的位置 // Key 是行号,Value 是该行中需要设置为空单元格的列号列表 Map<Integer, List<Integer>> emptyCellPositions = new HashMap<>(); if (attrs.rowspan > 1) { for (int k = 1; k < attrs.rowspan; k++) { if (i + k < tableRowsNode.size()) { List<TableCell> nextRowCells = (List<TableCell>) tableRowsNode.get(i + k).getContent(); if (j >= nextRowCells.size()) { // 如果目标列索引超出范围,则直接添加到末尾 nextRowCells.add(new TableCell()); recordEmptyCellPosition(emptyCellPositions, i + k, j); // 记录位置 } else { // 否则在指定位置插入空单元格 nextRowCells.add(j, new TableCell()); recordEmptyCellPosition(emptyCellPositions, i + k, j); // 记录位置 } } } } // 打印或处理记录的空单元格位置 for (Map.Entry<Integer, List<Integer>> entry : emptyCellPositions.entrySet()) { System.out.println("Row " + entry.getKey() + ": Columns " + entry.getValue()); } // 辅助方法:用于记录空单元格的位置 private static void recordEmptyCellPosition(Map<Integer, List<Integer>> map, int row, int col) { map.computeIfAbsent(row, key -> new ArrayList<>()).add(col); } ``` ### 解释上述代码 1. **使用 `Map` 数据结构**: - 我们使用了 `Map<Integer, List<Integer>>`,其中 `Key` 是行号,`Value` 是该行中需要设置为空单元格的列号列表。 - 这种方式可以更直观地表示哪些行有哪些列需要设置为空单元格。 2. **辅助方法 `recordEmptyCellPosition`**: - 为了简化主逻辑中的代码,我们定义了一个辅助方法 `recordEmptyCellPosition`。 - 该方法通过 `computeIfAbsent` 方法确保每个行号对应一个非空的列号列表,然后将当前列号添加到列表中。 3. **打印记录**: - 遍历 `emptyCellPositions` 的所有条目,输出每行对应的空单元格列号。 ### 示例输出 假设 `tableRowsNode` 有 5 行,`rowspan = 3`,并且在第 2 行第 3 列触发了空单元格的插入操作,则可能的输出如下: ``` Row 2: Columns [3] Row 3: Columns [3] ``` 这表示在第 2 行和第 3 行的第 3 列分别插入了空单元格。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值