一、函数返回值
1、return操作,如果返回值为多个,寻找或者构造一个数据结构带回去
2、使用如下方法,用入参带回来
TestKNN t = new TestKNN();
String datafile = new File("").getAbsolutePath() + File.separator +"resource"+File.separator + "datafile.data";
try {
List<List<Double>> datas = new ArrayList<List<Double>>();
t.read(datas, datafile);
...
}
public void read(List<List<Double>> datas, String path){
try {
BufferedReader br = new BufferedReader(new FileReader(new File(path)));
String data = br.readLine();
List<Double> l = null;
while (data != null) {
String t[] = data.split(" ");
l = new ArrayList<Double>();
for (int i = 0; i < t.length; i++) {
l.add(Double.parseDouble(t[i]));
}
datas.add(l);
data = br.readLine();
}
} catch (Exception e) {
e.printStackTrace();
}
}
二、子类继承父类
public static final GraphDatabaseConnector dbConnector = new Neo4jConnector(driver,session);
当调用Neo4jConnector中的方法,而GraphDatabaseConnector 中没有的时候,这样是无法调用到的
三、实体类中的toString方法
public String toString() {
return new Gson().toJson(this);
}
这样不容易有空指针异常
四、循环中需要赋值给数组,这时要用到循环的变量i,相当于指针,但是如果不是普通的循环,就不能这样做,
for (int i = 0; i < arr2Row; i++) {
List<Float> arr2list=new ArrayList<>();
for (int j = i*col; j < (i+1)*col; ++j) {
arr2list.add(mat2Buf.get(j));
System.out.println("被广播出去的index:" +i+ ",element:" + mat2Buf.get(j));
}
map2.put(i, ArrayUtils.toPrimitive(arr2list.toArray(new Float[0]), 0.0F));
arr2list=null;
}
五、指针的问题
while (f.hasNext) {
var ele=f.next()
buf2.appendAll(ele._2)
buf1.+=(ele._1)
}
一定要把f.next()赋值,否则连续用两次,第二次用的时候,其实指针已经走了
六、list去重
List<string> listWithoutDup = new ArrayList<>(new HashSet<>(listWithDup));
假如传入的是对象,需要重写equals和hashcode方法
七、Java中List, Integer[], int[]的相互转换
https://blog.csdn.net/zx000003/article/details/82691578
八、Collections.singletonList(something)是不可变的,
对Collections.singletonList(something)返回的列表所做的任何更改将导致UnsupportedOperationException 。
Arrays.asList(something)允许Arrays.asList(something) 更改 。此外,由Collections.singletonList(something)返回的List的容量将始终为1,而Arrays.asList(something)的容量将为已支持数组的大小。
九、list大小
result=new ArrayList<List<String>>(max);
for (int i = 0; i < result.size(); i++) {
List<String> row=new ArrayList<String>(max);
for (int j = 0; j < row.size(); j++) {
row.add(".");
}
result.add(row);
}
System.out.println(result);
上边的结果,即使初始化了max的值,result是空的
要想初始化result,必须如下方式
result=new ArrayList<List<String>>(max);
for (int i = 0; i < max; i++) {
List<String> row=new ArrayList<String>(max);
for (int j = 0; j < max; j++) {
row.add(".");
}
result.add(row);
}
System.out.println(result);