List<String> rowList = new ArrayList<>(); 如何判断rowList中保存的字符串不是"" 并且不是null
时间: 2024-01-01 09:08:03 浏览: 105
可以使用以下代码来判断:
```java
if (rowList != null && !rowList.isEmpty()) {
for (String str : rowList) {
if (str != null && !str.isEmpty()) {
// 字符串不为空
}
}
}
```
首先判断rowList不为空且不为空集合,然后循环遍历每个字符串,判断字符串不为null且不为空。如果满足条件,则表示该字符串不为空。
相关问题
private static void export(HttpServletResponse response, File file, String fileName, Map<String, List<List<Object>>> sheetMap, Map<Integer, List<String>> selectMap) { // 整个 Excel 表格 book 对象 SXSSFWorkbook book = new SXSSFWorkbook(); // 每个 Sheet 页 Set<Entry<String, List<List<Object>>>> entries = sheetMap.entrySet(); for (Entry<String, List<List<Object>>> entry : entries) { List<List<Object>> sheetDataList = entry.getValue(); Sheet sheet = book.createSheet(entry.getKey()); // 创建合并算法数组 int rowLength = sheetDataList.size(); int columnLength = sheetDataList.get(0).size(); int[][] mergeArray = new int[rowLength][columnLength]; for (int i =0 ; i < sheetDataList.size(); i++) { // 每个 Sheet 页中的行数据 Row row = sheet.createRow(i); List<Object> rowList = sheetDataList.get(i); for (int j = 0; j < rowList.size(); j++) { // 每个行数据中的单元格数据 Object o = rowList.get(j); int v = 0; if (o instanceof URL) { // 如果要导出图片的话, 链接需要传递 URL 对象 setCellPicture(book, row, patriarch, i, j, (URL) o); } else { Cell cell = row.createCell(j); if (i == 0) { // 第一行为表头行,采用灰色底背景 v = setCellValue(cell, o, headStyle); } else { // 其他行为数据行,默认白底色 v = setCellValue(cell, o, rowStyle); } } mergeArray[i][j] = v; } } } } 我如何在这里获取档案名称的数据内容 并把相同的内容纵向合并起来呢
您可以使用一个 `Map` 来保存每个文件名对应的行数列表,然后在遍历行数据时,根据文件名获取相应的行数列表,将相同的文件名在纵向上进行合并。以下是修改后的代码示例:
```java
private static void export(HttpServletResponse response, File file, String fileName,
Map<String, List<List<Object>>> sheetMap, Map<Integer, List<String>> selectMap) {
// 整个 Excel 表格 book 对象
SXSSFWorkbook book = new SXSSFWorkbook();
// 每个 Sheet 页
Set<Entry<String, List<List<Object>>>> entries = sheetMap.entrySet();
for (Entry<String, List<List<Object>>> entry : entries) {
List<List<Object>> sheetDataList = entry.getValue();
Sheet sheet = book.createSheet(entry.getKey());
// 创建合并算法数组
int rowLength = sheetDataList.size();
int columnLength = sheetDataList.get(0).size();
int[][] mergeArray = new int[rowLength][columnLength];
// 保存每个文件名对应的行数列表
Map<String, List<Integer>> fileNameRowsMap = new HashMap<>();
for (int i = 0; i < sheetDataList.size(); i++) {
// 每个 Sheet 页中的行数据
Row row = sheet.createRow(i);
List<Object> rowList = sheetDataList.get(i);
String currentFileName = (String) rowList.get(0); // 假设文件名在第一列
// 获取当前文件名对应的行数列表
List<Integer> rows = fileNameRowsMap.get(currentFileName);
if (rows == null) {
rows = new ArrayList<>();
fileNameRowsMap.put(currentFileName, rows);
}
for (int j = 0; j < rowList.size(); j++) {
Object o = rowList.get(j);
int v = 0;
if (o instanceof URL) {
// 如果要导出图片的话, 链接需要传递 URL 对象
setCellPicture(book, row, patriarch, i, j, (URL) o);
} else {
Cell cell = row.createCell(j);
if (i == 0) {
// 第一行为表头行,采用灰色底背景
v = setCellValue(cell, o, headStyle);
} else {
// 其他行为数据行,默认白底色
v = setCellValue(cell, o, rowStyle);
}
}
mergeArray[i][j] = v;
}
// 将当前行数添加到对应的文件名行数列表中
rows.add(i);
}
// 纵向合并相同的文件名
for (List<Integer> rows : fileNameRowsMap.values()) {
if (rows.size() > 1) {
for (int column = 0; column < columnLength; column++) {
int startRow = rows.get(0);
int endRow = rows.get(rows.size() - 1);
sheet.addMergedRegion(new CellRangeAddress(startRow, endRow, column, column));
}
}
}
}
}
```
在这个示例中,我创建了一个 `fileNameRowsMap` 来保存每个文件名对应的行数列表。在遍历行数据时,我将当前行对应的文件名添加到对应的行数列表中。然后,我使用 `fileNameRowsMap` 进行纵向合并相同的文件名所在的行。请注意,这个示例假设文件名在每行数据的第一列。如果文件名在其他列上,请根据实际情况进行调整。
List<Map<String, Object>> rowList = jdbcTemplate.queryForList(pageSql);查出来的日期时间字段,怎么赋值给对象的String属性字段
`jdbcTemplate.queryForList(pageSql)`是Spring JDBC中的一个方法,用于执行SQL查询并将结果集作为List<Map<String, Object>>返回。在这种情况下,每个Map代表一行结果,键为列名,值为对应的列数据。
当你从数据库查询出来的时间或日期字段是`java.sql.Timestamp`类型时,你可能需要将其转换为`String`类型,以便赋值给对象的`String`属性。以下是一个简单的方法来实现这一转换:
```java
// 假设obj是你的目标对象,dateStrKey是Map中的日期时间字段的键,dateStrAttrName是对象的String属性名
for (Map<String, Object> rowMap : rowList) {
Timestamp timestamp = (Timestamp) rowMap.get(dateStrKey);
if (timestamp != null) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 指定日期时间的格式
String dateStr = sdf.format(timestamp); // 转换为指定格式的字符串
// 假设你的对象有一个方法叫做setDateStrAttrName用来设置日期字符串
obj.setDateStrAttrName(dateStr);
}
}
```
在上述代码中,我们首先从`rowMap`中获取`Timestamp`对象,然后创建一个`SimpleDateFormat`实例来指定我们希望的日期时间格式。接着,使用`SimpleDateFormat`的`format`方法将`Timestamp`对象转换成一个格式化的字符串。最后,我们通过调用对象的setter方法来设置这个字符串。
请注意,你可能需要根据实际的字段名和属性名以及日期格式来调整上述代码。
阅读全文