实用代码片段

159 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第1天

以下只是个人常用的一些代码片段总结,如有不对还请指正

获取时间戳

//获取完整的秒时间戳
Instant.now().getEpochSecond();//10
//毫秒级时间戳
System.currentTimeMillis();

获取几天前的时间

public static String getPastDate(int past) {
    Calendar calendar = Calendar.getInstance();
    calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) - past);
    Date today = calendar.getTime();
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
    String result = format.format(today);

    return result;
}
String s = getPastDate(7);

JSON com.alibaba.fastjson.JSONObject

字符串转json

String resultw = "{}";
JSONObject jsonObject1 = JSON.parseObject(resultw);

JSONArray转list

JSONArray jsonArray = new JSONArray();
jsonArray.add(new User("水果","苹果","12345",1,"3"));
jsonArray.add(new User("水果","桃子","12345",4,"4"));
jsonArray.add(new User("粮食","麦子","12345",5,"6"));
jsonArray.add(new User("粮食","玉米","12345",3,"1"));
List<User> users = JSONObject.parseArray(jsonArray.toJSONString(), User.class);
System.out.println(users.toString());

结果

[User(type=水果, name=苹果, phone=12345, age=1, number=3), User(type=水果, name=桃子, phone=12345, age=4, number=4), User(type=粮食, name=麦子, phone=12345, age=5, number=6), User(type=粮食, name=玉米, phone=12345, age=3, number=1)]

日期

获取近七天日期

/**
 * 获取近七天日期
 * @return
 */
private List<String> get(){
    List<String> dateList = new ArrayList<>();
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    for (int i = 1; i < 8; i++) {
        Date date = DateUtils.addDays(new Date(), -i);
        String formatDate = sdf.format(date);
        dateList.add(formatDate);
    }
    //排序
    Collections.reverse( dateList );
    return dateList;
}

近六个月

        // 带年份
        List<String> resultList = new ArrayList<String>();
        Calendar cal = Calendar.getInstance();
        //近六个月
        cal.set(Calendar.MONTH, cal.get(Calendar.MONTH)+1); //要先+1,才能把本月的算进去
        for(int i=0; i<6; i++){
            cal.set(Calendar.MONTH, cal.get(Calendar.MONTH)-1); //逐次往前推1个月
            resultList.add(String.valueOf(cal.get(Calendar.YEAR)) 
                    +"-"+ (cal.get(Calendar.MONTH)+1 < 10 ? "0" + 
                        (cal.get(Calendar.MONTH)+1) : (cal.get(Calendar.MONTH)+1)));
        }
        //排序
        Collections.reverse( resultList );
        
        // 不带年份
           List<String> resultList = new ArrayList<String>();
        Calendar cal = Calendar.getInstance();
        //近六个月
        cal.set(Calendar.MONTH, cal.get(Calendar.MONTH)+1); //要先+1,才能把本月的算进去
        for(int i=0; i<6; i++){
            cal.set(Calendar.MONTH, cal.get(Calendar.MONTH)-1); //逐次往前推1个月
            resultList.add( (cal.get(Calendar.MONTH)+1 < 10 ? "0" 
                    + (cal.get(Calendar.MONTH)+1) : String.valueOf((cal.get(Calendar.MONTH)+1))));
        } 
        
        

stream流

public class User {

    private String type;
    private String name;
    private String phone;
    private Integer age;
    private String  number;

    public User(String type, String name, String phone, Integer age, String number) {
        this.type = type;
        this.name = name;
        this.phone = phone;
        this.age = age;
        this.number = number;
    }
}
List<User> list  = new ArrayList<>();
 
list.add(new User("水果","苹果","12345",1,"3"));
list.add(new User("水果","桃子","12345",4,"4"));
list.add(new User("粮食","麦子","12345",5,"6"));
list.add(new User("粮食","玉米","12345",3,"1"));
list.add(new User("电器","冰箱","12345",8,"9"));
list.add(new User("电器","电视","12345",9,"2"));

过滤

fileter 里面的条件可以随意更换,需要怎么过滤添加什么条件,可以理解为if判断。

List<User> users = list.stream().filter(m -> m.getType().contains("水果")).collect(Collectors.toList());
System.out.println(users.toString());

结果

[User(type=水果, name=苹果, phone=12345), User(type=水果, name=桃子, phone=12345)]

排序

可以排序字符串

List<User> collect = list.stream().sorted(Comparator.comparing(User::getNumber)).collect(Collectors.toList());

结果

[User(type=粮食, name=玉米, phone=12345, age=3, number=1), User(type=电器, name=电视, phone=12345, age=9, number=2), User(type=水果, name=苹果, phone=12345, age=1, number=3), User(type=水果, name=桃子, phone=12345, age=4, number=4), User(type=粮食, name=麦子, phone=12345, age=5, number=6), User(type=电器, name=冰箱, phone=12345, age=8, number=9)]

分组转map

JSONArray jsonArray = new JSONArray();
jsonArray.add(new User("水果","苹果","12345",1,"3"));
jsonArray.add(new User("水果","桃子","12345",4,"4"));
jsonArray.add(new User("粮食","麦子","12345",5,"6"));
jsonArray.add(new User("粮食","玉米","12345",3,"1"));
Map<String, List<User>> collect1 = list.stream().collect(Collectors.groupingBy(User::getType));

结果

{水果=[User(type=水果, name=苹果, phone=12345, age=1, number=3), User(type=水果, name=桃子, phone=12345, age=4, number=4)], 
电器=[User(type=电器, name=冰箱, phone=12345, age=8, number=9), User(type=电器, name=电视, phone=12345, age=9, number=2)], 
粮食=[User(type=粮食, name=麦子, phone=12345, age=5, number=6), User(type=粮食, name=玉米, phone=12345, age=3, number=1)]}

List 过滤Null

 public static void main(String[] args) {
        List<String> list = Arrays.asList("ye", "chuan", null);
        List<String> collect = list.stream().map(e -> {
            if (e == null) {
                return null;
            }
            return e;
        }).filter(Objects::nonNull).collect(Collectors.toList());
        System.out.println(collect); 
    }