Arrays.asList("1,2,3".split(","))使用List<Integer>接收
时间: 2024-09-18 17:13:48 浏览: 40
`Arrays.asList("1,2,3".split(","))` 这行代码的作用是将字符串 "1,2,3" 中的逗号分隔的部分转换成一个 `List<Integer>` 类型的列表。首先,通过 `split(",")` 方法将原字符串按照逗号分割成一个数组,然后 `Arrays.asList()` 函数把这个数组封装到一个固定大小的列表中,每个元素都是一个字符串。由于你想得到的是 `Integer` 类型的列表,所以你需要对每个字符串元素进一步处理,通常是通过 `Integer.parseInt()` 方法将其转换为整数。
完整过程可以像这样:
```java
String str = "1,2,3";
List<String> stringList = Arrays.asList(str.split(","));
List<Integer> intList = new ArrayList<>();
for (String element : stringList) {
intList.add(Integer.parseInt(element));
}
```
现在 `intList` 就是一个包含整数的 `List<Integer>` 了。
相关问题
List<String> listId = new ArrayList<>(Arrays.asList(ids.split(",")));怎么让他和数据库表列的JDBC匹配
当你想要把一个字符串列表(`List<String>`) `listId` 插入到数据库,特别是当这个列表来自于CSV格式的逗号分隔字符串(`String[] ids.split(",")`)时,你需要先确保列表元素的数据类型和数据库表对应列的JDBC类型兼容。如果你的数据库列期望的是基本类型(如Integer, String等)或预定义的JDBC类型,这里有一些步骤可以参考:
1. **检查列类型**:首先确认数据库表对应的列(`listId`应该映射到的那个列)是什么类型,例如整数(Integer)、字符(String)或其他特定类型。
2. **转换列表元素**:如果数据库列是基本类型,那么需要将字符串转换成相应的类型。例如,如果列是Integer类型,你可以这样做:
```java
List<Integer> intList = new ArrayList<>();
for (String id : ids.split(",")) {
intList.add(Integer.parseInt(id.trim()));
}
```
如果是String类型,无需转换。
3. **设置JDBC类型**:在MyBatis的XML映射文件或注解中,确保`listId`的映射设置正确的JDBC类型。例如:
- 对于Integer列,映射可能像这样:`javaType=java.util.List<java.lang.Integer>` 和 `jdbcType=INTEGER`
- 对于String列,保持默认的`javaType=java.util.List<java.lang.String>` 即可。
4. **批量插入**:MyBatis提供了批量插入功能(如`insertAll()`),这样可以直接一次性将整个列表插入,减少单条操作的开销。
5. **处理空值**:如果可能的列表元素是空串,记得添加判断并处理,避免插入NULL值,除非数据库允许NULL。
```java
for (String id : ids.split(",")) {
if (!id.isEmpty()) { // 或者使用trim()去除首尾空格
listId.add(id);
}
}
```
最后,在MyBatis的Mapper接口或XML文件中,确保参数映射与实际的数据库表列类型一致,或者适当地设置`nullValue`和`resultType`以处理空值。
if (p != null && p == 1) { User u = userService.findById(user.getUserId()); article.setUserId(u.getUserId()); } else if (p != null && p == 2) { User u = userService.findById(user.getUserId()); String artIds = u.getArticleIds(); List<String> result = new ArrayList<>(); if (StringUtils.isNotBlank(artIds)) { result = Arrays.asList(StringUtils.split(artIds, ",")); } List<Integer> retIds = new ArrayList<>(); for (String temp : result) { retIds.add(Integer.valueOf(temp).intValue()); } retArt = articleService.findByListId(retIds); } Long total = articleService.getCount(article, s_bPublishDate, s_ePublishDate);
这段代码是在上面提到的方法中的一部分。该代码根据传入的参数 p 的不同取值,分别执行不同的查询操作并将查询结果存储在 retArt 变量中。如果 p 的值为 1,则从当前用户中获取用户 ID 并将其设置为查询文章的用户 ID,用于查询该用户发布的文章列表。如果 p 的值为 2,则从当前用户中获取用户 ID 并使用该 ID 查询用户收藏的文章列表。查询结果存储在 retArt 变量中。最后,该代码调用 articleService.getCount 方法查询文章总数,并将查询结果存储在 total 变量中。
阅读全文