1. 数组和list的转换
String[] str = new String[] { "you", "wu" };
List list = Arrays.asList(str);
List list = new ArrayList(2);
list.add("guan");
list.add("bao");
String[] array = new String[list.size()];
array = list.toArray(array);
2.定义静态的 array list map
public final static List<String> list= Lists.newArrayList("720", "741", "990");
public final static String[] array= { "1", "2", "3", "4" };
public final static Map<String, String> map= new HashMap<String, String>() {
private static final long serialVersionUID = 1L;
{
put("1", "张三");
put("2", "李四");
}
};
3.map的遍历
//keySet
for(Object key:map.keySet){
System.out.println("map的key值是=====》"+key);
System.out.println("map的value值是====》"+map.get(key));
}
//map.values
Map<String, List<User>> map = Maps.Hashmap();
for (List<User> user : map.values()) {
List<User> item = user;
}
4.将list 分割为n条数据为一组的list
List<User> userList = Lists.ArratList();
List<List<User>> lists= Lists.partition(userList, 1000);
//partition 方法使用于 分批量插入数据 防止大量数据执行不成功问题
for (List<User> user : lists) {
userDao.batchInsert(user );
}
2.将list倒序输出
list.add("A");
list.add("B");
list.add("C");
Collections.reverse(list);
System.out.println(list); 输出结果是: C B A
3.List去重复,保留原始顺序
public List toNoRepeatList(List list){
Set set = new ArrayList();
for(Object object : list){
if(set.add(object)){
newList.add(object);
}
}
}
4.将list转换成,分割的字符串
List list = new ArrayList();
list.add("1"); list.add("2"); list.add("3");
String.join(",",list); //list中的值输出结果是 1.2.3
5.all elements are null问题的处理
法一:移除null元素 list.remove(null);
法一:修改sql,返回一定不可能为空的主键
6.set的遍历
只能使用增强for循环,不能使用 下标取值
7.将List<User> 中按user对象某个字段排序
参考文档:java 根据对象的某个字段(boolean)对集合进行排序_z1193851270的博客-CSDN博客_根据boolean排序
java的list集合如何根据对象中的某个字段排序? - 小甜瓜安东泥 - 博客园
//比较list中对象的boolean类型排序
public List<PageDate> sortDataList(List<PageData> dataList){
Collections.sort(categoryList, new Comparator<DG_ComponentCategory>() {
@Override
public int compare(PageData o1, PageData o2) {
//得到要比较的两个对象的某个字段,这里是checked 是 boolean类型的
boolean object1= Boolean.parseBoolean(o1.getString("checked"));
boolean object2= Boolean.parseBoolean(o2.getString("checked"));
//两个值进行位运算,值不同为1,为true,参与运算
//值相同为0,为false,不参与运算
if (o1^ o2) {
return onLine1 ? -1 : 1;
} else {
return 0;
}
}
});
}
8.List<Map>转LIst<bean>
/**
* 将一个map组成的list转成实体类bean组成的list
*
* @param mapList
* 存了map对象的list
* @param clazz
* 需要将这些map转成哪个实体类对象
* @return
*/
public <T> List<T> convertMapListToBeanList(List<Map<String, Object>> mapList, Class<T> clazz) {
JSONArray jsonArray = new JSONArray();
jsonArray.addAll(mapList);
List<T> listBean = jsonArray.toJavaList(clazz);
return listBean;
}
9.对象序列化和反序列化
public class GsonUtils {
public static Map<String, Object> parseMap(String json) {
GsonJsonParser gjp = new GsonJsonParser();
return gjp.parseMap(json);
}
public static String convetToString(Object o) {
Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();
String json = gson.toJson(o);
return json;
}
public static <T> T convetToBean(String json, Class<T> c) {
Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();
return gson.fromJson(json, c);
}
}
如: StockanalysisResultDTO result = GsonUtils.convetToBean(resultApi, StockanalysisResultDTO.class);
9.通过属性名称反射获取到对应的值
public class ObjReflectAttr {
/**
* 通过 属性名 反射获取到 value
*
* @param obj 反射对象
* @param attrName 属性名/数据库 字段名(属性名、字段名规范)
* @return 结果
* @throws Exception e
*/
public static String getVauleByAttr(Object obj, String attrName) throws Exception {
PropertyDescriptor p = new PropertyDescriptor(StringUtil.a_bToaB(StringUtil.a_bToaB(attrName)), obj.getClass());
Method readMethod = p.getReadMethod();
String result = readMethod.invoke(obj) + StringUtils.EMPTY;
return "null".equals(result) ? null : result;
}
}
如:user.setValue(ObjReflectAttr.getVauleByAttr(user, name));
10bean的深度复制
public class DeepCloneUtil {
public static Object deepClone(Object target) throws Exception {
// 将对象写到流里
ByteArrayOutputStream bo = new ByteArrayOutputStream();
ObjectOutputStream oo = new ObjectOutputStream(bo);
oo.writeObject(target);
oo.close();
// 从流里读出来
ByteArrayInputStream bi = new ByteArrayInputStream(bo.toByteArray());
ObjectInputStream oi = new ObjectInputStream(bi);
Object readObject = oi.readObject();
oi.close();
return readObject;
}
private static final KryoPool KRYO_POOL = newKryoPool();
private static KryoPool newKryoPool() {
return new KryoPool.Builder(() -> {
final Kryo kryo = new Kryo();
// 提前注册会提速
kryo.register(List.class);
kryo.register(Collection.class);
kryo.register(String.class);
kryo.register(Map.class);
kryo.setInstantiatorStrategy(new Kryo.DefaultInstantiatorStrategy(
new SerializingInstantiatorStrategy()));
return kryo;
}).softReferences().build();
}
/**
* kryo 深度复制
* @param object
* @return
* @param <T>
*/
public static <T> T deepCopy(T object) {
Kryo kryo = KRYO_POOL.borrow();
T copy = kryo.copy(object);
KRYO_POOL.release(kryo);
return copy;
}
}
如:User user= (User) DeepCloneUtil.deepClone(userList.get(i));
11.map 转bean 参看文档:java工具类-bean转map_pgmanor的博客-CSDN博客_bean转map
/**
* 将map集合中的数据转化为指定对象的同名属性中
*/
public static <T> T mapToBean(Map<String, Object> map,Class<T> clazz) throws Exception {
//通过无参构造方法实例化
T bean = clazz.newInstance();
//实体类通过BeanMap转化成Bean
BeanMap beanMap = BeanMap.create(bean);
beanMap.putAll(map);
return bean;
}
public static <T> Map<String, ?> beanToMap(T bean) {
BeanMap beanMap = BeanMap.create(bean);
Map<String, Object> map = new HashMap<>();
beanMap.forEach((key, value) -> {
map.put(String.valueOf(key), value);
});
return map;
}
public static <T> T mapToBean(Map<String, ?> map, Class<T> clazz)
throws IllegalAccessException, InstantiationException {
T bean = clazz.newInstance();
BeanMap beanMap = BeanMap.create(bean);
beanMap.putAll(map);
return bean;
}
public static <T> List<Map<String, ?>> objectsToMaps(List<T> objList) {
List<Map<String, ?>> list = new ArrayList<>();
if (objList != null && objList.size() > 0) {
Map<String, ?> map = null;
T bean = null;
for (int i = 0, size = objList.size(); i < size; i++) {
bean = objList.get(i);
map = beanToMap(bean);
list.add(map);
}
}
return list;
}
public static <T> List<T> mapsToObjects(List<Map<String, ?>> maps, Class<T> clazz)
throws InstantiationException, IllegalAccessException {
List<T> list = new ArrayList<>();
if (maps != null && maps.size() > 0) {
Map<String, ?> map = null;
for (int i = 0, size = maps.size(); i < size; i++) {
map = maps.get(i);
T bean = mapToBean(map, clazz);
list.add(bean);
}
}
return list;
}
12.
// 将对象中的属性 存在map集合中
// ignoreObjAttributes 不需要转换的属性
// valueNullInsert 是否为空
public static HashMap<String, Object> convertObjToMap(Object obj, List<String> ignoreObjAttributes, Boolean valueNullInsert) {
HashMap<String, Object> map = new HashMap<>();
if (obj == null) {
return null;
}
Field[] fields = obj.getClass().getDeclaredFields();
try {
for (Field item : fields) {
try {
//打开私有访问
item.setAccessible(true);
//获取属性
String name = item.getName();
//获取属性值
Object value = item.get(obj);
if (!ignoreObjAttributes.contains(name) && (value != null || valueNullInsert)) {
map.put(name, value);
}
} catch (Exception e) {
e.printStackTrace();
}
}
} catch (SecurityException e) {
e.printStackTrace();
}
return map;
}