Intro
前几天突然接到一个用Java复现Python代码的活,把我这个Java零基础的人折磨得要命。借此契机入门Java的同时也先记一下某一些特定的tips,方便以后查阅吧。
四舍五入
1 2
| int start = (int)Math.round(Float.parseFloat(start_video_locations.get(index2).toString()))
|
List的去重
1
| List course_ids = (List) course_ids_col.stream().distinct().collect(Collectors.toList());
|
List的排序
1
| Collections.sort(list_name);
|
获取list长度
1
| int list_length = list.size();
|
object类型的小数转成double
1 2
| double score = Double.valueOf(String.valueOf(ques_df.row(0).get(3)));
|
object类型字符串转成string
1 2
| String viewed_video_id =(String) viewed_video_ids.get(count);
|
double类型转成string
1
| double pass = String.valueOf(pass_total);
|
double数据强制转成int
1 2
| int i = new Double(video_lengths.get(0).toString()).intValue();
|
for循环遍历列表List
1
| for(Object course_index:course_indexs){}
|
用Python的话是下面这个:
1
| for course_index in course_indexs
|
获取变量类型
1
| System.out.println(object_name.getClass().getTypeName())
|
判断两个字符串是否相等
1 2
| string1.equals(string2);
|
对一个List获取某个指定索引的元素值
两个int类型的变量相除获得一个double型的结果
1
| double avg_rep_d = Double.valueOf(total_rep)/Double.valueOf(viewed_video_number);
|
double型小数保留n位后转成string格式保存
1 2
| String avg_rep = String.format("%.2f", avg_rep_d);
|
一个方法(函数)里传回多个返回值的笨方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| private static List get_per_vtotal_vcompl(DataFrame df){ String per_vtotal = String.format("%.4f", per_vtotal_d); String per_vcompl = String.format("%.4f", per_vcompl_d); List vtotal_vcompl_list = Arrays.asList(per_vtotal,per_vcompl); return vtotal_vcompl_list; }
List vtotal_vcompl_list = get_per_vtotal_vcompl(df);
String per_vtotal = vtotal_vcompl_list.get(0).toString();
String per_vcompl = vtotal_vcompl_list.get(1).toString();
|
Date类型数据两种样式与String的两两转换
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| String end_time = end_localtimes.get(index1).toString(); String start_time = start_localtimes.get(index2).toString();
SimpleDateFormat usual_format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat green_format = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy",Locale.US);
Date end_time_green = green_format.parse(end_time); Date start_time_green = green_format.parse(start_time);
String end_time_str = usual_format.format(end_time_green); String start_time_str = usual_format.format(start_time_green);
Date end_time_usual = usual_format.parse(end_time_str); Date start_time_usual = usual_format.parse(start_time_str);
if(end_time_usual.getTime() < start_time_usual.getTime()){ video_pause = video_pause + 1; }
|
类似于Python中pandas的DataFrame的一个包
1
| import joinery.DataFrame;
|
官方文档
把某一列类型强制转换
1
| video_df = video_df.convert(String.class);
|
按某个值筛选部分数据
1 2 3 4 5 6
| DataFrame course_df = video_df.select(new DataFrame.Predicate<Object>() { @Override public Boolean apply(final List<Object> row) { return course_id.equals(row.get(1)); } });
|
这里用Python的话是下面的一句话:
1
| course_df = video_df[video_df['course_id']==course_id]
|
佛了。
获取整个df的长度(行数)
1
| int length = df.length();
|
获取df各列的数据类型
1
| System.out.println(df.types());
|
获取某一列的所有值组成一个ObjectList并强制转换成StringList
1
| List<String> question_ids = (List<String>)(List)course_df.col("question_id");
|
获取某一行数据,组成一个list
1 2
| List row = df.row(index);
|
After
就这样入坑Java,还氪了《核心技术》和《Haed First》这两本书,希望不会半途而废吧。这个杂七杂八的tips以后可能未完待续。