Properties

加载defaults.properties文件

defaults.properties内容如下

    lastname=Smith

获取properties属性(defaults.properties文件和TestController文件置于同级目录)

    try (InputStream bundledResource = TestController.class.getResourceAsStream("defaults.properties")) {
Properties defaults = new Properties();
defaults.load(bundledResource);
return defaults;
} catch (IOException e) {
throw new UncheckedIOException( "defaults.properties not properly packaged" + " with application", e);
}

写Properties到xml文件

Properties prop = new Properties();
prop.setProperty("name", "Steve");
prop.setProperty("color", "green");
prop.setProperty("age", "23");
File file = new File("C:\\Users\\26401\\Desktop\\defaults.properties");
if (!file.exists()){
file.createNewFile();
}
prop.storeToXML(new FileOutputStream(file), "testing properties with xml"); <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>testing properties with xml</comment>
<entry key="color">green</entry>
<entry key="name">Steve</entry>
<entry key="age">23</entry>
</properties>

读Properties从xml文件

Properties prop = new Properties();
File file = new File("C:\\Users\\26401\\Desktop\\defaults.properties");
if (file.exists()){
prop.loadFromXML(new FileInputStream(file));
for (String name : prop.stringPropertyNames()){
System.out.println(name + "=" + prop.getProperty(name));
}
}else {
System.err.println("Error: No file found at: " + file);
}

Lambda表达式

自定义

Lambda表达式只能用于函数式接口

函数式接口只能包含一个抽象方法,可以有多个default和static方法,可以有多个重写对象的方法

@FunctionalInterface
interface MyFunctionalInterface {
void fn();
} MyFunctionalInterface mfi = () -> System.out.println("函数式接口");
mfi.fn(); 等价于 MyFunctionalInterface mfi = new MyFunctionalInterface() {
@Override
public void fn() {
System.out.println("函数式接口");
}
};

内置

Predicate<String> p = o -> o.isEmpty();            // 返回值类型必须是布尔值
Function<String, Boolean> f = o -> o.isEmpty(); // 返回值类型可以自定义
Consumer<String> c = o -> System.out.println(o); // 返回值类型为void
c.accept("没有返回值");

sort方法中使用Lambada

原始写法
List<Integer> list = new ArrayList<>();
list.add(3);
list.add(1);
list.add(2);
Collections.sort(list, new Comparator<Integer>(){
public int compare(Integer b, Integer l){
return b.compareTo(l);
}
}); // [1,2,3] Lambada写法
Collections.sort(list, (b, l) -> b.compareTo(l)); 或者
Collections.sort(list, Comparator.comparing(Integer::valueOf));

序列化

文件序列化

public class SerialClass implements Serializable {
private static final long serialVersionUID = 1L;
}

Gson序列化

<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.5</version>
</dependency> public class User { private Integer id;
private String name; public User(Integer id, String name) {
this.id = id;
this.name = name;
} getter...
setter...
} // 序列化成json
User user = new User(1, "小李");
Gson gson = new Gson();
String json = gson.toJson(user);
// 反序列化
User userCopy = gson.fromJson(json, User.class);

Jackson序列化

依赖

    <dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.6</version>
</dependency> json字符串转对象 ObjectMapper objectMapper = new ObjectMapper();
User outputObject = objectMapper.readValue( "{\"id\":\"1\",\"name\":\"小叶\"}", User.class);
outputObject.getName(); @JsonIgnoreProperties(ignoreUnknown = true) // 忽视反序列化遇到的不认识的属性
public class User {
...
} 对象转字符串 User user = new User(1, "小李");
ObjectMapper objectMapper = new ObjectMapper();
String json = objectMapper.writeValueAsString(user);

Comparable和Comparator

Comparable对象排序

public class User implements Comparable<User> {

    private Integer id;
private String name; public User(Integer id, String name) {
this.id = id;
this.name = name;
} public void setId(Integer id) {
this.id = id;
} public Integer getId() {
return id;
} public void setName(String name) {
this.name = name;
} public String getName() {
return name;
} @Override
public boolean equals(Object o) {
if (! (o instanceof User)) return false;
User p = (User)o;
return id.equals(p.id) && name.equals(p.name);
}
@Override
public int hashCode() {
return Objects.hash(id, name);
}
@Override
public int compareTo(User other) {
int idCompare = id.compareTo(other.id);
if (idCompare != 0) {
return idCompare;
} else {
return id.compareTo(other.id);
}
}
} List<User> list = Arrays.asList(new User(2, "小李"), new User(3, "小李"), new User(1, "小李"));
Collections.sort(list);

Comparator对象排序

List<User> list = Arrays.asList(new User(2, "小李"), new User(3, "小张"), new User(1, "小王"));

Collections.sort(list, new Comparator<User>() {
@Override
public int compare(User u1, User u2) {
return u1.getId().compareTo(u2.getId());
}
}); Collections.sort(list,(u1, u2) -> {
return u1.getId().compareTo(u2.getId());
}); Collections.sort(list,Comparator.comparing(User::getId).thenComparing(User::getName));

结语

本文章是java成神的系列文章之一

如果你想知道,但是本文没有的,请下方留言

我会第一时间总结出来并发布填充到本文

最新文章

  1. SharePoint Permission Extension
  2. selenium自动化-java-封断言类2
  3. (转)awk实例练习(二)
  4. JS this,call和apply以及回调函数
  5. Yii2-Redis使用小记 - Cache(转)
  6. mybatis-spring
  7. 一步一步学习Swift之(一):关于swift与开发环境配置
  8. mysql: 1045 access denied for user &#39;root&#39;@&#39;localhost&#39; using password yes
  9. CLR thread pool
  10. OpenJudge计算概论-寻找下标
  11. depth_write
  12. setInterval和setTimeout调用方法小知识科普
  13. List、Map和Set实现类
  14. [妙味DOM]第四课:Event-事件详解2
  15. JavaScript数组forEach()、map()、reduce()方法
  16. Vue.js响应式原理
  17. Gitlab_ansible_jenkins三剑客④jenkins安装图解及freestyle的简单使用
  18. hibench 对CDH5.13.1进行基准测试(测试项目hadoop\spark\)HDFS作HA高可靠性
  19. ubuntu查询可用安装包
  20. java面试④数据库部分

热门文章

  1. saltstack技术入门与实践
  2. mysql 习题
  3. opencv:图像的腐蚀和膨胀
  4. 本地动态SQL
  5. Elasticsearch 文档专用
  6. LeetCode OJ:Longest Palindromic Substring(最长的回文字串)
  7. mcake活动维护,检查 ★ ★
  8. h5启动原生APP总结
  9. Android中将歌曲导入到SD卡和模拟器
  10. velocity与map