farm模块-字符串集合转换工具类
This commit is contained in:
@@ -0,0 +1,170 @@
|
|||||||
|
package cn.iocoder.yudao.module.farm.framework.util;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 字符串集合转换工具类
|
||||||
|
* 用于在数据库字符串(逗号分隔)和Java集合之间转换
|
||||||
|
*
|
||||||
|
* @author 芋道源码
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
public class StringCollectionUtil {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分隔符
|
||||||
|
*/
|
||||||
|
private static final String SEPARATOR = ",";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 将字符串集合转换为数据库存储的字符串
|
||||||
|
*
|
||||||
|
* @param stringList 字符串集合
|
||||||
|
* @return 逗号分隔的字符串,如果集合为空则返回null
|
||||||
|
*/
|
||||||
|
public static String toDatabaseString(List<String> stringList) {
|
||||||
|
if (stringList == null || stringList.isEmpty()) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
// 过滤空字符串并去重
|
||||||
|
List<String> filteredList = stringList.stream()
|
||||||
|
.filter(StrUtil::isNotBlank)
|
||||||
|
.distinct()
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
|
if (filteredList.isEmpty()) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return String.join(SEPARATOR, filteredList);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 将数据库字符串转换为字符串集合
|
||||||
|
*
|
||||||
|
* @param databaseString 数据库中的字符串
|
||||||
|
* @return 字符串集合,如果字符串为空则返回空集合
|
||||||
|
*/
|
||||||
|
public static List<String> toStringList(String databaseString) {
|
||||||
|
if (StrUtil.isBlank(databaseString)) {
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
return Arrays.stream(databaseString.split(SEPARATOR))
|
||||||
|
.map(String::trim)
|
||||||
|
.filter(StrUtil::isNotBlank)
|
||||||
|
.distinct()
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("转换字符串集合失败,原始字符串: {}", databaseString, e);
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 将单个字符串转换为集合(兼容旧数据)
|
||||||
|
*
|
||||||
|
* @param singleString 单个字符串
|
||||||
|
* @return 字符串集合
|
||||||
|
*/
|
||||||
|
public static List<String> singleToStringList(String singleString) {
|
||||||
|
if (StrUtil.isBlank(singleString)) {
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
|
|
||||||
|
// 如果已经是逗号分隔的格式,直接转换
|
||||||
|
if (singleString.contains(SEPARATOR)) {
|
||||||
|
return toStringList(singleString);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 单个字符串,包装成集合
|
||||||
|
List<String> stringList = new ArrayList<>();
|
||||||
|
stringList.add(singleString);
|
||||||
|
return stringList;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 将字符串集合转换为单个字符串(兼容旧接口)
|
||||||
|
* 取第一个字符串,如果没有则返回null
|
||||||
|
*
|
||||||
|
* @param stringList 字符串集合
|
||||||
|
* @return 第一个字符串或null
|
||||||
|
*/
|
||||||
|
public static String stringListToSingle(List<String> stringList) {
|
||||||
|
if (stringList == null || stringList.isEmpty()) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return stringList.get(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 验证字符串集合是否有效
|
||||||
|
*
|
||||||
|
* @param stringList 字符串集合
|
||||||
|
* @return 是否有效
|
||||||
|
*/
|
||||||
|
public static boolean isValidStringList(List<String> stringList) {
|
||||||
|
if (stringList == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 检查是否有空字符串
|
||||||
|
return stringList.stream().allMatch(StrUtil::isNotBlank);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取字符串集合的大小
|
||||||
|
*
|
||||||
|
* @param stringList 字符串集合
|
||||||
|
* @return 字符串数量
|
||||||
|
*/
|
||||||
|
public static int getStringCount(List<String> stringList) {
|
||||||
|
if (stringList == null) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return stringList.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 添加字符串到集合
|
||||||
|
*
|
||||||
|
* @param stringList 原字符串集合
|
||||||
|
* @param newString 新字符串
|
||||||
|
* @return 新的字符串集合
|
||||||
|
*/
|
||||||
|
public static List<String> addString(List<String> stringList, String newString) {
|
||||||
|
if (StrUtil.isBlank(newString)) {
|
||||||
|
return stringList != null ? new ArrayList<>(stringList) : new ArrayList<>();
|
||||||
|
}
|
||||||
|
|
||||||
|
List<String> result = stringList != null ? new ArrayList<>(stringList) : new ArrayList<>();
|
||||||
|
if (!result.contains(newString)) {
|
||||||
|
result.add(newString);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 从集合中移除字符串
|
||||||
|
*
|
||||||
|
* @param stringList 原字符串集合
|
||||||
|
* @param stringToRemove 要移除的字符串
|
||||||
|
* @return 新的字符串集合
|
||||||
|
*/
|
||||||
|
public static List<String> removeString(List<String> stringList, String stringToRemove) {
|
||||||
|
if (stringList == null || StrUtil.isBlank(stringToRemove)) {
|
||||||
|
return stringList != null ? new ArrayList<>(stringList) : new ArrayList<>();
|
||||||
|
}
|
||||||
|
|
||||||
|
List<String> result = new ArrayList<>(stringList);
|
||||||
|
result.remove(stringToRemove);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user