文章目录

  • 前言
  • 首字母大写
  • 判断列表List是否为空
  • 列表 交集,并集
  • 列表 removeAll方法
  • replace方法
  • for循环
  • List 列表 去除重复元素
  • retainAll 方法
  • NodeFinder,Block,Statement, ASTNode
  • 获取AST node的行号
  • ArrayList
  • 修改list中的元素
  • 嵌套list
  • 文件和文件夹的创建(多级目录)
  • 断点设置
  • 运行 cmd/shell 指令
  • list是否包含指定元素
  • 杀死eclipse进程
  • java判断路径是文件夹还是文件


标题:java 系统学习

前言

用python用久了,写java的时候就懵了。
这里想系统的学习一下。

创建时间:2019年07月18日 16:37:18

首字母大写

java-转换首字母大写

public class Test {

  /**
  * 需求:把一个字符串的首字母转成大写,其余小写
  * 链式编程:只要保证每次调用完方法返回的是对象,就可以继续调用
  */
  public static void main(String[] args) {
    String str="kObeBryaNt";
    String str1=str.substring(0,1).toUpperCase().concat(str.substring(1).toLowerCase());
    System.out.println(str1);//Kobebryant
  }

}

判断列表List是否为空

  • java判断集合list是为空

java公司内部技术分享清单 java内部培训_Java

列表 交集,并集

  • java-----求两个list的交集、并集、和差集

主要就是retainAll和removeAll之类的。

列表 removeAll方法

  • Java中ArrayList的removeAll方法详解 https://www.jb51.net/article/117750.htm

java公司内部技术分享清单 java内部培训_Java_02

replace方法

  • Java replace() 方法 https://www.runoob.com/java/java-string-replace.html

for循环

  • Java里面for循环的几种用法

List 列表 去除重复元素

  • Java中List集合去除重复数据的方法

可以新建一个list,然后用.contain这个方法去判断是不是已经包含了元素,不是则加,否则不add。

retainAll 方法

  • java 取交集方法retainAll

返回的是boolean值,但是慎用这个返回值。

NodeFinder,Block,Statement, ASTNode

  • Class NodeFinder https://help.eclipse.org/luna/index.jsp?topic=%2Forg.eclipse.jdt.doc.isv%2Freference%2Fapi%2Forg%2Feclipse%2Fjdt%2Fcore%2Fdom%2FNodeFinder.html
  • Class Block https://help.eclipse.org/neon/index.jsp?topic=%2Forg.eclipse.jdt.doc.isv%2Freference%2Fapi%2Forg%2Feclipse%2Fjdt%2Fcore%2Fdom%2FBlock.html
  • Class Statement https://help.eclipse.org/neon/index.jsp?1topic=%2Forg.eclipse.jdt.doc.isv%2Freference%2Fapi%2Forg%2Feclipse%2Fjdt%2Fcore%2Fdom%2FStatement.html
  • Class ASTNode https://help.eclipse.org/neon/index.jsp?topic=%2Forg.eclipse.jdt.doc.isv%2Freference%2Fapi%2Forg%2Feclipse%2Fjdt%2Fcore%2Fdom%2FASTNode.html&anchor=getStartPosition–
  • Class URL https://docs.oracle.com/javase/7/docs/api/java/net/URL.html
  • Class TestResult http://www.gzoltar.com/web/javadoc/1.7.2/index.html

获取AST node的行号

  • eclipse ASTNode to source code line number https://stackoverflow.com/questions/11126857/eclipse-astnode-to-source-code-line-number
int lineNumber = compilationUnit.getLineNumber(compilationUnit.getExtendedStartPosition(astNode)
  • Java Code Examples for org.eclipse.jdt.core.dom.ASTNode https://www.programcreek.com/java-api-examples/index.php?api=org.eclipse.jdt.core.dom.ASTNode
private void serializePosition(CompilationUnit cu, ASTNode node, JsonGenerator jG) throws IOException {
    final int startPosition = node.getStartPosition();
    jG.writeFieldName("startPosition");
    jG.writeNumber(startPosition);
    jG.writeFieldName("startLine");
    jG.writeNumber(cu.getLineNumber(startPosition));
    jG.writeFieldName("startColumn");
    jG.writeNumber(cu.getColumnNumber(startPosition) + 1); // 1-based numbering

    final int endPosition = startPosition + node.getLength();
    jG.writeFieldName("endPosition");
    jG.writeNumber(endPosition);
    jG.writeFieldName("endLine");
    jG.writeNumber(cu.getLineNumber(endPosition));
    jG.writeFieldName("endColumn");
    jG.writeNumber(cu.getColumnNumber(endPosition) + 1); // 1-based numbering
}

以上代码是很关键的。

  • How to get line number for general ASTNode in the source code? https://stackoverflow.com/questions/47008420/how-to-get-line-number-for-general-astnode-in-the-source-code

这个也可以参考下。

ArrayList

  • Java中ArrayList类的用法(二) https://baijiahao.baidu.com/s?id=1620200868843045092&wfr=spider&for=pc

修改list中的元素

  • java怎么把list集合中字符串末尾为a的改成 https://zhidao.baidu.com/question/692616515479087524.html
import java.util.ArrayList;
 
public class Test3 {
  public static void main(String[] args) {
    ArrayList<String> strList = new ArrayList();
    strList.add("adfdgga");
    strList.add("afafdgfdsgsd");
    strList.add("gaaafdga");
    for (int i = 0; i < strList.size(); i++) {
      if (strList.get(i).endsWith("a")) {
        strList.set(i, "132141341"); // 把结尾为a的字符串替换为"132141341"
      }
    }
    for (String s : strList) {// 打印替换后结果
      System.out.print(s + " ");
    }
    System.out.println();
  }
 
}

嵌套list

  • java ArrayList嵌套ArrayList
  • Java中Pair键值对的使用

其实可以用ArrayList 和 Pari<String, String> 这样的形式。

java公司内部技术分享清单 java内部培训_eclipse_03

.getFisrt()
.getSecond()
可以分别取到Pair的前后两个元素

文件和文件夹的创建(多级目录)

  • java 文件和文件夹的创建
  • java在不存在文件夹的目录下创建文件

java公司内部技术分享清单 java内部培训_java_04

断点设置

  • eclipse和myeclipse一键取消所有断点 https://jingyan.baidu.com/article/1612d500406ceee20e1eeed4.html
  • Enable and disable all breakpoints in eclipse https://stackoverflow.com/questions/4116260/enable-and-disable-all-breakpoints-in-eclipse?rq=1

其实就是在 debug视图下的右上角变量观察框框的旁边,就是断点的控制窗口。

然后选中所有断点,右键即可控制enable,或者disable。

运行 cmd/shell 指令

  • How to use “cd” command using Java runtime? https://stackoverflow.com/questions/4884681/how-to-use-cd-command-using-java-runtime
  • Changing the current working directory in Java? https://stackoverflow.com/questions/840190/changing-the-current-working-directory-in-java

list是否包含指定元素

  • 如何判断Listlist中是否包含某个字符串 https://zhidao.baidu.com/question/1732997277540138747.html

这个需要遍历list,contains这样的方法应该是不行的。

可以用equals方法。

  • Java String.contains()方法
  • Java - List 的 contains 方法的性能
  • [Java基础]ArrayList的contains方法,你用对了吗?

杀死eclipse进程

  • Eclipse hanging, how to kill it properly? https://stackoverflow.com/questions/16961850/eclipse-hanging-how-to-kill-it-properly

在服务器里面需要用到。

如下,需要找到eclipse进程,然后用 kill -9 杀掉(不是-p,-p我运行的时候没用。)

jps -l

// use the actual process id
kill -9 {the_copied_pid}

java公司内部技术分享清单 java内部培训_java公司内部技术分享清单_05

java判断路径是文件夹还是文件

List<Path> allPaths = new ArrayList<>();
		try (Stream<Path> paths = Files.walk(Paths.get(folder))) { //"/home/you/Desktop"
			paths
//			.filter(path -> path.toAbsolutePath().toString().endsWith(".java")) //Files::isRegularFile
			.forEach(path -> {
				String filePath = path.toAbsolutePath().toString();
				if (new File(filePath).isFile()){
					allPaths.add(path);
					if(!filePath.endsWith(".java")){
						FileUtil.writeToFileWithFormat("non_java file: %s", path.toAbsolutePath().toString());
					}
				}
			});
			
			int javaFileCnt = 0;
			for(Path path : allPaths){
				if (path.toAbsolutePath().toString().endsWith(".java")){
					javaFileCnt ++;
					String filePath = path.toAbsolutePath().toString();
					locCnt += FileUtil.readFile(filePath).size();
		        	locCntNotEmpty += FileUtil.readFileForLocCnt(filePath).size();
				}
			}
			
			FileUtil.writeToFileWithFormat("all files cnt in %s: %s, all java files cnt: %s", folder, allPaths.size(), javaFileCnt);
		} catch (IOException e) {
			e.printStackTrace();
		}
  • java判断路径是文件夹还是文件 2020年10月18日22:08:04