创作开始时间:2021年11月8日21:48:25
写java很久了,感觉经常会反复用到一些代码,有时候记不住,所以在这里写一个cheatsheet,记录一些常用的操作。
Map的key是不能用泛型的,value可以!
interface的成员变量:
此外:
可以直接赋值。也可以addAll。看具体场景了。
参考:
具体代码在我的mcstudy项目。
具体代码在我的mcstudy项目。
参考:
其他:
参考:
之前太懒了,没来得及研究,今天才发现可以批量选择性插入getter和setter,很方便。
大概是:在编辑界面,右键source,然后就有generate getter setter的选项了!
很方便,直接参考下面官网,下载jar后放到dropins 文件夹就行,(也可以在eclipse的marketplace下载,但是网速太慢了)。
之前只有.可以补全,现在设置过后全部都可以补全了,还挺好的。
Decorates Java projects and working sets that contain build path errors
我的是maven项目,需要:
1)根据problems的提示,解决build path的错误依赖问题。(比如依赖不存在)
2)然后右键pom.xml,update project,就好啦!
单目乘除为关系,逻辑三目后赋值。
单目:单目运算符+ –(负数) ++ – 等
乘除:算数单目运算符* / % + -
为:位移单目运算符<< >>
关系:关系单目运算符> < >= <= == !=
逻辑:逻辑单目运算符&& || & | ^
三目:三目单目运算符A > B ? X : Y
后:无意义,仅仅为了凑字数
赋值:赋值=
@Override
public boolean equals(Object obj) {
// self check
if (this == obj) {
return true;
}else if (obj == null) { //null check
return false;
}else if (getClass() != obj.getClass()) { // type check
return false;
}else {
xxx fsOther = (xxx) obj; // cast
// compare
return xxx ;
// return Objects.equals(this.data, fsOther.data);
}
}
从Jdk源码的注释中可以看出,hashCode() 在散列表中才会发挥作用,当对象无需创建像HashMap、HashSet等集合时,可以不用重写hashCode方法,但是如果有使用到对象的哈希集合等操作时,必须重写hashCode()和equals()。
方法一:
访问官网:https://git.eclipse.org/r/plugins/gitiles/jdt/eclipse.jdt.core/+/BETA_JAVA13/org.eclipse.jdt.core下载tar.gz,或者用wget:
wget [https://git.eclipse.org/r/plugins/gitiles/jdt/eclipse.jdt.core/+archive/BETA_JAVA13/org.eclipse.jdt.core.tar.gz](https://git.eclipse.org/r/plugins/gitiles/jdt/eclipse.jdt.core/+archive/BETA_JAVA13/org.eclipse.jdt.core.tar.gz)
方法二:
在网址:https://git.eclipse.org/r/plugins/gitiles/jdt/eclipse.jdt.core/+refs 寻找合适的版本,因为我目前用到的是3.26版本的jar包。所以我想找到对应的源码。
方法三:
刚刚才发现,直接在我本地的maven repository文件夹下面就有源码!
/home/apr/.m2/repository/org/eclipse/jdt/org.eclipse.jdt.core/3.26.0/org.eclipse.jdt.core-3.26.0-sources.jar
直接解压就行了,挺快的。
new File(".").getCanonicalPath()
public <T> List<T> magicalListGetter() {
return new ArrayList<T>();
}
// 我写的函数:
public static <T> void printList(List<T> list) {
int i = 0;
for (T t : list) {
System.out.format("[%s] %s\n", i++, t.toString());
}
if (list.isEmpty()) {
System.out.format("Empty List.\n\n");
}else {
System.out.format("\n");
}
}
# 得到的list不可修改,即不可以添加或者删除元素
List<String> strings = Arrays.asList(new String[]{"one", "two", "three"});
# 得到的list可修改,即可以添加或者删除元素
List<String> strings =
new ArrayList<String>(Arrays.asList(new String[]{"one", "two", "three"}));
参考:
// jdk11
String[] array = yourList.toArray(String[]::new);
// jdk8
String[] array= yourList.stream().toArray(String[]::new);
参考:
// 方法1
list.subList(100, list.size()).clear();
// 方法2
list = list.subList(0, 100);
return new ArrayList<String>(Arrays.asList(singleElement));
# 方法1
Globals.inclusionFilter = { "AbstractXYItemRenderer", "AbstractCategoryItemRenderer" };
# 方法2
Globals.inclusionFilter;
Globals.inclusionFilter = new String[] { "AbstractXYItemRenderer", "AbstractCategoryItemRenderer" };
A valid identifier must have characters [A-Z] or [a-z] or numbers [0-9], and underscore(_) or a dollar sign ($). for example, @javatpoint is not a valid identifier because it contains a special character which is @.
// A-Za-z0-9_\\$ 包含所有identifier的组成元素。
String fomattedContent = content.replaceAll("[A-Za-z0-9_\\$]+", "ID");
String[] argArray = arg.split("\\s+");
参考:
String[] camelCaseWords = s.split("(?=[A-Z])");
# 方法1
String after = before.trim().replaceAll(" +", " ");
# 方法2
sValue = sValue.trim().replaceAll("\\s+", " ")
如下:
String cmd = String.format("cd %s; git log --pretty=format:\"%H\" > %s", repoDir, commitIdPath);
这样是错的,正确的写法是:
# 必须在%前面加上%,才能转义!
String cmd = String.format("cd %s; git log --pretty=format:\"%%H\" > %s", repoDir, commitIdPath);
理论上,key可以是任何类型。
从HashMap的语法上来讲,一切对象都可以作为Key值。如:Integer、Long、String、Object等。但是在实际工作中,最常用的使用String作为Key值。
但是推荐:key的类型最好是string类型。
参考:
4种方法:
Map<String,String> map = new HashMap<String,String>();
map.put("a", "aa")
map.put("b", "bb")
map.put("b", "cc")
// 1 Entry
for (Map.Entry<String,String> entry : map .entrySet())
System.out.println("Key = " + entry.getKey() +
", Value = " + entry.getValue());
// 2 keySet()
for (String key: map.keySet())
System.out.println("key: " + key);
for (String value : map.values())
System.out.println("value: " + value );
// 3 使用iterator
Iterator<Map.Entry<String, String>> itr = map.entrySet().iterator();
while(itr.hasNext())
{
Map.Entry<String, String> entry = itr.next();
System.out.println("Key = " + entry.getKey() +
", Value = " + entry.getValue());
}
// 4 java8才开始支持foreach
map.forEach((k,v) -> System.out.println("Key = "
+ k + ", Value = " + v));
参考:
// list to set
Set<Integer> targetSet = new HashSet<>(sourceList);
// set to list
List<Integer> targetList = new ArrayList<>(sourceSet);
创作结束时间: