1.将元素插入List的指定位置:
List<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
list.add("c");
list.add("d");
list.add("e");
list.add(2, "f");
System.out.println(list); // [a, b, f, c, d, e]
2.对List<?>排序:
首先假设youz有这个bean : ColumnValue
public class ColumnValue implements Comparable<ColumnValue>{
private ColumnMeta column;
private Object value;
private boolean check = true;
public ColumnValue() {
}
public ColumnValue(ColumnMeta column, Object value) {
this(column, value, true);
}
public ColumnValue(ColumnMeta column, Object value, boolean check) {
this.value = value;
this.column = column;
this.check = check;
}
public ColumnMeta getColumn() {
return column;
}
public void setColumn(ColumnMeta column) {
this.column = column;
}
public Object getValue() {
return value;
}
public void setValue(Object value) {
this.value = value;
}
public boolean isCheck() {
return check;
}
public void setCheck(boolean check) {
this.check = check;
}
public ColumnValue clone() {
ColumnValue column = new ColumnValue();
column.setValue(this.value);
column.setColumn(this.column.clone());
return column;
}
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((column == null) ? 0 : column.hashCode());
result = prime * result + ((value == null) ? 0 : value.hashCode());
return result;
}
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null) return false;
if (getClass() != obj.getClass()) return false;
ColumnValue other = (ColumnValue) obj;
if (column == null) {
if (other.column != null) return false;
} else if (!column.equals(other.column)) return false;
if (value == null) {
if (other.value != null) return false;
} else if (!value.equals(other.value)) return false;
return true;
}
@Override
public String toString() {
return "ColumnValue [column=" + column + ", value=" + value + "]";
}
@Override
public int compareTo(ColumnValue col) {
// TODO Auto-generated method stub
int flag = this.column.getName().compareTo(col.column.getName());
return flag;
}
}
实现这个接口 : Comparable<ColumnValue>
然后实现这个对比的方法 : compareTo 这里是根据name来排序。
调用排序:
List<ColumnValue> columns = new LinkedList<ColumnValue>();
Collections.sort(columns); // 排序
3. 使用占位符来格式化字符串:
static String CustomMapper = "\n\t@Autowired\n\tprivate {0}Mapper {1}Mapper;";
java.text.MessageFormat.MessageFormat.format(CustomMapper, "test", "class");
注:如果传入的内容不是String,比如:int , Long 会导致数字里面有 , 号,所以需要强制显示转成String类型。
4. 通过matches正则匹配一些内容:
-- 匹配init开头的、不包含bastriver并且以xml结尾的内容
public static final String REGEX1 = "^(.*)init_((?!(bastriver)).)*\\.xml$";
-- 匹配update开头的、包含abc|efg|hij|rpg其中之一 并且以xml结尾的内容
public static final String REGEX2 = "^(.*)update_(abc|efg|hij|rpg).*_LOGO_.*.xml$";
-- 匹配test开头的、包含bastriver并且以xml结尾的内容
public static final String REGEX3 = "^(.*)test_(.*?)(bastriver).*\\.xml$";
5. split(regex, limit) 使用注意切割的字符是不是特殊字符,比如: | 和 .
6. json字符串和java bean间的转换。用到Ali的fastjson,这篇文章写的很详细。
附:
1) .*具有贪婪的性质,首先匹配到不能匹配为止,根据后面的正则表达式,会进行回溯;
2) .*?则相反,一个匹配以后,就往下进行,所以不会进行回溯,具有最小匹配的性质;
3) 更多Java常用的工具类可以参考:Hutool。