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