如果有误和遗漏,欢迎小伙伴发邮件 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
总结
- 获取不存的在 key 不会 Exception;
- 只有对应的 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}}
总结
- 如果key存在,put相同值会替换旧值
- 如果往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;
}