- 博客(45)
- 收藏
- 关注
原创 kotlin实现LRUCache
与一般的结构不同,参考了LinkedHashMap,将经常访问的放在最后,linkedLast()相关题目,https://leetcode.cn/problems/lru-cache/
2023-09-26 18:35:59
725
原创 objList=strList为什么报错
先看下面一段代码乍一看好像没什么问题,但为什么追报错呢?先别急,看下面一段代码偷偷把str放到objList里了,但又从intList拿出来了?看来你应该知道编译器为什么报错了吧,就是为了防止小白偷偷添加一些奇怪的东西。
2023-09-14 16:04:04
344
原创 Java HashMap源码学习
/ AbstractMap,可以随机访问// 初始容量// 最大容量// 负载因子,当前容量超过最大容量*负载因子,开始扩容// 链表大于8树化// 树小于6链化// 树化的最小容量// 存储key,value// 通过key中字段计算V value;// 省略get,set等模板方法HashMap可以存储键值对初始容量是16,每次扩容2倍数先添加,后扩容从尾部添加。
2023-09-07 22:05:10
264
原创 RecyclerView的局部刷新居然这么简单
面试时经常被问到Android列表控件RecyclerView,无非就是深入源码与ListView进行对比,四层缓存和局部刷新。而今天的重点就是局部刷新。
2023-09-01 18:52:03
878
原创 简单模拟livedata数据倒灌
livedata内部通过版本号更新可见视图数据,而在view在活跃与不活跃之间反复横跳时,livedata也会通知数据。数据倒灌,就是将旧的或只展示一次的数据再次展现出来。不会导入视频,在这个链接里,
2023-08-03 19:31:16
553
原创 使用Powershell快速建立adb连接
新建文件后,更改文件后缀为.ps,直接拖拽到Powershell命令框里就可以直接建立连接了。IP的查找比较繁琐,可以在手机上看,也可以通过命令查看。方便快捷,现在多学一点,以后可以少学一点。但使用封装代码能简化这一步骤。在建立adb连接时,默认是。
2023-06-20 01:37:09
1227
1
原创 实现BottomNavigationView和Navigation联动
实现BottomNavigationView和Navigation联动界面展示引入依赖创建Fragment创建navigation为BottomNavigationView创建menu主界面布局实现BottomNavigationView和Navigation联动界面展示引入依赖// Navigationimplementation "androidx.navigation:navigation-fragment:2.2.2"implementation "androidx.navigation
2022-05-29 14:37:36
746
1
原创 RecyclerView结合ViewBinding的使用
RecyclerView结合ViewBinding的使用引入ViewBinding添加Adapter子布局RecyclerViewAdapter实现引入ViewBindingandroid {compileSdk 32defaultConfig { ... ... viewBinding { enabled = true }}添加Adapter子布局<?xml version="1.0" encoding="utf-8"?><
2022-05-29 11:36:11
357
原创 将力扣字符串形式的二维数组转换成Java二维数组
class MyTest { public int[][] toArray(String s) { // String s = "[[1,3,1],[1,5,1],[4,2,1]]"; String[] split = s.split("],\\["); int[][] ints1 = new int[split.length][]; for (int i = 0; i < split.length; i++) {
2022-05-07 18:16:57
499
原创 RxJava
依赖// RxAndroid implementation 'io.reactivex:rxandroid:1.2.1' implementation 'io.reactivex:rxjava:1.2.0' // Retrofit implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.retrofit2:converter-gson:2.5.0'Ma
2022-04-29 20:19:23
107
原创 Android开发之调用相机拍照与本地图库选择图片
引用链接Android开发之调用相机拍照与本地图库选择图片Android调用相机实现拍照功能部分截图引言小项目有一个访问相册的需求,在网上查找得到两位大神博客指点,但博客发布时间过旧,难免因更新而产生Bug,我便把Bug进行修改并对代码进行了适量调整,供大家参考MainActivity2package com.example.myapplication;import android.Manifest;import android.app.Activity;import androi
2022-04-09 18:20:29
1068
原创 组件化改造框架--------ARouter
1.添加依赖和配置android { defaultConfig { ... javaCompileOptions { annotationProcessorOptions { arguments = [AROUTER_MODULE_NAME: project.getName()] } } }}dependencies { // 替换成最新版本, 需
2022-01-10 12:40:49
88
原创 安卓网络请求--------retrofit
导入依赖// 网络请求implementation 'com.squareup.retrofit2:retrofit:2.6.1'implementation 'com.squareup.retrofit2:converter-gson:2.6.1'请求数据[{"id":"1","name":"小红","version":"21"},{"id":"2","name":"小丽","version":"32"},{"id":"2","name":"王刚","version":"41"}]根据
2021-12-21 17:54:52
203
原创 SwipeRefreshLayout的简单使用
引入依赖implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.0.0'简单使用swipeRefreshLayout.setOnRefreshListener { if (random.nextBoolean()) loadImg(IMG_URL) else loadImg(IMG_URL2)//网络请求 swipeRefreshLayout.isRefreshing = false}...
2021-12-02 18:41:20
157
原创 Glide的简单使用
添加依赖implementation 'com.github.bumptech.glide:glide:4.12.0'annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0'简单使用Glide.with(this) .load(IMG_URL) .placeholder(R.drawable.ic_launcher_background)//占位图 .listener(object : RequestLi
2021-12-02 17:43:31
1743
原创 Volley的简单使用
添加依赖implementation 'com.android.volley:volley:1.1.1'添加权限<uses-permission android:name="android.permission.INTERNET"/>简单使用val queue = Volley.newRequestQueue(this)val stringRequest = StringRequest( Request.Method.GET, URL, {
2021-12-02 16:52:58
1565
原创 Retrofit的简单使用
引入依赖implementation 'com.squareup.retrofit2:retrofit:2.6.1'implementation 'com.squareup.retrofit2:converter-gson:2.6.1'添加权限<uses-permission android:name="android.permission.INTERNET"/>json数据{"id":"1","name":"123qwe小王","version":"1"}实体类data
2021-12-02 16:34:23
2208
原创 Room的简单使用
引入依赖id 'kotlin-kapt'implementation "androidx.room:room-runtime:2.1.0"kapt "androidx.room:room-compiler:2.1.0"Entity实体类import androidx.room.Entityimport androidx.room.PrimaryKey@Entitydata class User( var firstName: String, var lastName:
2021-12-01 14:42:07
661
原创 ViewModel的简单使用
引入依赖 implementation 'androidx.fragment:fragment-ktx:1.2.2'实现自增功能import androidx.lifecycle.LiveDataimport androidx.lifecycle.MutableLiveDataimport androidx.lifecycle.SavedStateHandleimport androidx.lifecycle.ViewModelclass MyViewModel(private va
2021-12-01 13:34:57
362
原创 Android常见报错
报错:“Cannot access androidx.lifecycle.HasDefaultViewModelProviderFactory” 可正常运行解决方法:添加库:implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'implementation 'androidx.lifecycle:lifecycle-runtime:2.2.0'
2021-11-28 22:10:52
765
原创 安卓常用依赖
更新时间2021年10月26日 implementation 'com.google.code.gson:gson:2.8.8//json解析 implementation 'com.squareup.okhttp3:okhttp:5.0.0-alpha.2'//网络请求 implementation 'com.squareup.okio:okio:3.0.0-alpha.10'//网络请求 implementation 'org.jsoup:jsoup:1.12.1'//jsou
2021-10-26 20:09:44
163
原创 SHA1的获取方法
public static String sHA1(Context context) { try { StringBuilder stringBuilder = new StringBuilder(); PackageInfo info = context.getPackageManager().getPackageInfo( context.getPackageName(), PackageManage
2021-10-23 17:57:12
192
原创 安卓网络请求--------okhttp
安卓网络请求先看一下今天的大纲导入okhttp和okio依赖禁用掉明文流量请求的检查添加访问权限布局及代码实现运行结果下面是具体步骤一、导入okhttp和okio的依赖1.打开File-Project Structure-Dependencies,2.选择自己的程序文件,点击加号,选择Library Dependency3.搜索okhttp,选择Com.squareup.okhttp3,点击ok按钮5.okio同上6.应用,确认7.此时我们可以看到Gradle Sc
2021-10-17 19:18:10
692
原创 你真的了解空格吗
你是否被空格所欺骗先说一下我遇到的问题,我在网页上复制了一段文字backward 退步的,相反的bald 秃的balk 妨碍balmy 温和的band 条,带,联合,结合bandit 强盗banish 驱逐出境bar 法院barbarian 野蛮……我需要送字符串中筛选出英文字符,并且实现英文字符之间存在一个空格,目标如下// baboon backward bald balk balmy band bandit banish bar barbarian搜首先复习了一下文件操作,读取到st
2021-10-10 17:35:29
134
原创 三目表达式的错误使用
项目场景:三目表达式的错误使用问题描述:使用三目表达式报错map2.get(poll) == 1 ? map2.remove(poll) : map2.put(poll, map2.get(poll) - 1); 原因分析:@青衫白衣小黑炭 (来自q群大佬)条件表达式不能单独使用简单来说,可以理解成条件表达式是有一个返回值的,而且这个返回值必须使用(这个只是抽象理解)可以给它赋值,也可以当成参数传递给函数,就是不能直接使用解决方案:按下alt+enter,系统给出两
2021-08-29 09:36:21
186
原创 常见排序算法
以后有时间再补充package com.suanfa.paixv;public class Test { public static void main(String[] args) { int num = 1000000; int[] nums = new int[num]; for (int i = 0; i < num; i++) { nums[i] = num - i; } l
2021-08-13 16:42:53
101
原创 类加载与反射
没写到的地方下次一定补package com.haojinhui2.fanshe;public class Animal { private String name; public int age; public Animal() { } private Animal(String name, int age) { this.name = name; this.age = age; } private vo
2021-08-12 15:07:38
80
原创 stream流
以后有时间再补stream流中普遍使用lambda表达式,使用stream流是对lambda复习和强化使用stream流步骤一般分为三种:生成流,操作流和结果一,生成流 1. collect ArrayList<String> list = new ArrayList<>(); Stream stream = list.stream(); HashSet<Integer> set = new HashSet
2021-08-10 20:45:55
96
原创 函数式接口
函数式接口Supplier, Consumer, Predicate, FunctionSupplier: 生产 Supplier s = () -> "生产了一个字符串"; System.out.println(s.get());Consumer: 消费 Consumer<String> c = System.out::println; c.accept("abc"); Consumer<String> c2 = s ->
2021-08-09 22:52:31
61
原创 网络和服务
以后有时间再加注释package com.haojinhui2.wangluo;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;public class Send { pu
2021-08-08 21:47:49
78
原创 多线程启动
public class Test extends Thread{ @Override public void run() { System.out.println("test"); } public static void main(String[] args) { new Test().start(); }}public class Test implements Runnable{ @Override pu
2021-08-08 12:55:29
49
原创 IO流总结
String fileName = "text.txt"; // 文件名 FileOutputStream fos = new FileOutputStream(fileName); fos.write('a'); // 1 fos.write("abc".getBytes()); // 2 fos.close(); String fileName = "text.txt"; ..
2021-08-07 15:49:20
97
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人