java基础汇总

如果有误和遗漏,欢迎小伙伴发邮件 xiwelu@qq.com ,我会第一时间更正和完善

Map集合get()方法和put()方法

public static void main(String[] args){
        Map<Long, String> a = new HashMap<Long, String>(){{
            put(1L,"Guo");
            put(2L,"Rong");
            put(3L,"Rong");
        }};
        String abc = a.get("abc");
        String string = a.get("3");
        String string2 = a.get("3L");
        String string3 = a.get(3L);
        System.out.println(string+"/"+string+"/"+string2+"/"+string3);
    }

运行结果

null / null / null / Rong

总结

  1. 获取不存的在 key 不会 Exception
  2. 只有对应的 key 才能取出值;

Map<String, Map<String, String>> map = new HashMap<>(1);

Map<String,String> newMap = new HashMap<>(){{
	put("1","2");
}};
Map<String,String> newMap2 = new HashMap<>(){{
	put("2","2");
}};

Map<String,String> newMap3 = new HashMap<>(){{
	put("3","2");
}};

map.put("a",newMap);
map.put("a",newMap2);
map.get("a").putAll(newMap3);
System.out.println(map);

运行结果

{a={2=2, 3=2}}

总结

  1. 如果key存在,put相同值会替换旧值
  2. 如果往key里面填入别的值,必须先get(),在put();

时间戳,UUID,日期比较

/**
 *	获取当前毫秒数:System.currentTimeMillis(); 而不是new Date().getTime(); 
 * 	说明:如果想获取更加精确的纳秒级时间值,用System.nanoTime。
 * 	在JDK8中,针对统计时间等场景,推荐使用Instant类。
 * 
 */
public class Demo1 { 
    public static void main(String args[]) {
		
        // 已过时
        long b = new Date().getTime();
		
        // java7 获取当前毫秒值
        long a = System.currentTimeMillis();
		
        // java8 获取当前毫秒值方式
        long epochSecond = Instant.now().getEpochSecond();
		
        // java8 时间比较
        Boolean bo = timeComparison("2019-03-21 10:00:00", "2019-03-21 10:01:10");
        Boolean bo2 = timeComparison2("2019-03-21", "2019-03-22");
		
        long c = new Date("Sat, 12 Aug 1995 13:30:00 GMT").getTime();

    }	
	
    /*	获取 1-number之间的随机数	*/
    private static Long getRandom(Integer number){
         return System.currentTimeMillis() % number;
    }
	
    /*	获取 UUID ; MYSQL数据库当中获取方式: SELECT uuid(); */
    private static String getUUID32(){
         return UUID.randomUUID().toString().replace("-", "").toLowerCase();
    }
	
    /* 时间戳转换日期 */
    private static String timeStempToDate(Long timeStemp){
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         return sdf.format(new Date(timeStemp));
    }

    /* 日期转换为时间戳 */
    private static Long dateToTimeStemp(String string){
         Date date = new Date();
         try {
             SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
             date = sf.parse(string);
         } catch (ParseException e) {
             e.printStackTrace();
   		}
   		return date.getTime();
    }
	
    /* 日期转换为时间戳 */
    private static String getSpecificDate(int year ,int month,int day ){
         return new Date(year - 1900, month - 1, day).getTime();
    }

    /* 比较2个时间大小 */	
    private static Boolean timeComparison(String date1,String date2){
         //时间格式器
         DateTimeFormatter dtm =  DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss", Locale.CHINA);
         return Duration.between(LocalDateTime.parse(date1, dtm),
                                 LocalDateTime.parse(date1, dtm))
                        .isNegative();
    }
    
    /* 比较2个时间大小 */	
    private static Boolean timeComparison2(String date1,String date2){
        DateTimeFormatter dtm =  DateTimeFormatter.ofPattern("yyyy-MM-dd", Locale.CHINA);
        return Period.between(LocalDate.parse(date1, dtm),
                              LocalDate.parse(date2, dtm))
                     .isNegative();
    }
}
		

List初始化

// 此方法list的size固定,使用add方法抛UnsupportedOperationException异常
List<String> list1 = Arrays.asList("xxx","yyy","zzz");

List<String> list2 = new ArrayList<>(Arrays.asList("xxx","yyy","zzz"));

List<String> list3 = new ArrayList();
list3.add("xxx");
list3.add("yyy");
list3.add("zzz");

List<String> list4 = new ArrayList(){{
	add("xxx");
	add("yyy");
	add("zzz");
}};

Map初始化

Map<String , Object> map1 = new HashMap<>();
map.put("key1", "value1");
map.put("key2", "value2");
map.put("key3", "value3");

Map<String , Object> map2 = new HashMap<>(){{
	put("key1", "value1");
	put("key2", "value2");
	put("key3", "value3");
}};

java8函数式编程

public interface Time<T,U> extends Function<T,U> {

    public static  String edition = "v1";

    default LocalDateTime getNow(){
        return LocalDateTime.now();
    }

    default String log(){
        return edition;
    }

    default DayOfWeek getWeek(){
        return LocalDateTime.now().getDayOfWeek();
    }
    
    static <T> Time<T, T> fun() {
        return t -> t;
    }

    public static void main(String[] args) {

        Time<LocalDateTime,LocalDateTime> time = a -> a.plusDays(-1);

        time.log();

        LocalDateTime now = time.getNow();

        LocalDateTime yesterday = time.apply(now);

        DayOfWeek week = time.getWeek();
		
		System.out.println(Arrays.asList(now,yesterday,week.getValue()));
		
		Time<Object,Object> time1 = Time.fun();
		
        //Time<Object,Object> time2 = Time::fun;
    }
}

console

[2019-05-09T19:29:51.119, 2019-05-08T19:29:51.119, 4]

java8异常处理

public interface ThrowingFunction<T, E extends Exception,U> {
	U accept(T t) throws E;

	static <T,U> Function<T,U> throwingFunctionWrapper(ThrowingFunction<T, Exception,U> 	throwingFunction) {
		return i -> {
			try {
				return  throwingFunction.accept(i);
			} catch (Exception ex) {
				System.out.println("Exception");
			return null;
			}
		};
	}

	public static void main(String[] args) {
		String json = "{'name'':'guorongrong'}";
		Optional.ofNullable(json)
			.map(throwingFunctionWrapper(JSONObject::parseObject))
			.ifPresent( System.out::println);
	}
}

生成 [0-n) 个不重复的随机数

// 生成 [0-n) 个不重复的随机数
public static ArrayList getDiffNO(int n){
	ArrayList list = new ArrayList();
	Random rand = new Random();
	boolean[] bool = new boolean[n];
	int num = 0;
	for (int i = 0; i < n; i++) {
		do {
			num = rand.nextInt(n);
		} while (bool[num]);
		bool[num] = true;
		list.add(num);
	}
	return list;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值