阿里最新面试必备项之Java的String类,持续更新中!

最新腾讯面试必备项之Java的String类,持续更新中!

1.1 String的特性

  • String类:代表字符串。Java程序中的所有字符串字面值(如“abc”)都作为此类的实例实现。

  • String是一个final类,代表不可变的字符序列。

  • String字符串是常量,用双引号引起来表示。他们的值在创建之后不能更改。

  • String对象的找字符内容是存储在一个字符数组value[]中的。(jdk新版本已改为使用byte类型的数组value[]存放)

1.2 String字面量赋值的内存理解

字面量赋值是直接在常量池中赋值的

Demo:

package com.broky.commonClass;import org.junit.jupiter.api.Test;/*** String 的使用** @author 13roky* @date 2021-04-24 10:34*/
public class StringTest {/*String:字符串,使用一对""来表示.1.String类是被声明为final的,不可被继承.2.String实现了Serializable接口:标识字符串是支持序列化的. (io流)实现了Comparable接口:可以比较大小.3.String内部定义了final char[] value用于存储字符串数字. final表示数组和其元素不能被修改。(为了节省jvm的内存空间jdk9已经改为byte[]类型数组)4.String:代表不可变的字符序列。简称:不可变性。体现:1.当对字符串重新赋值时,需要重新指定内存区域赋值,不能使用原有的value进行赋值.(因为原有的value是final的)2.当对现有的字符串进行连接操作时,需要重新指定内存区域赋值,不能使用原有的value赋值.3.当调用String的replace()方法修改字符或字符串时,也必须重新指定内存区域赋值,不能使用原有的value赋值.5.通过字面量的方式(区别于new)给一个字符串赋值,此时的字符串值生命在字符串常量池中.6.字符串常量池中是不会存储相同内容的字符串的.*/@Testpublic void test01(){//字面量的定义方式, 在内存中用的是同一个内存地址String s1 = "abc";String s2 = "abc";//==比较的是地址值,为true说明s1和s2在内存中指向的是同一个位置System.out.println(s1 == s2);//trues1 = "hello";System.out.println(s1);//helloSystem.out.println(s2);//abcSystem.out.println("================================================");String s3 = "abc";s3 += "def";System.out.println(s3);//abcdefSystem.out.println(s2);//abcSystem.out.println("================================================");String s4 = "adb";String s5 = s4.replace('a','m');System.out.println(s4);//abcSystem.out.println(s5);//mbc}
}

图解:

由于字符串常量池中是不会存储相同内容的字符串的,所以在字符串常量池中s1和s2指向同一个内存地址。

由于String内部定义了final char[] value用于存储字符串数字,final表示数组和其元素不能被修改,其也就有了不可变的字符序列的性质。所以改变s1取值为hello后,并不会改变字符串常量池中的对应位置的值,而是会新开辟一个内存地址存放hello值,并且s1指向新的内存地址。


以下图解类似。

1.3 String new方式赋值的内存理解

Demo:

package com.broky.commonClass;import org.junit.jupiter.api.Test;/*** String 的使用** @author 13roky* @date 2021-04-24 10:34*/
public class StringTest {/*String实例化方式测试:方式一: 通过字面量定义的方式方式二: 通过new + 构造器的方式面试题:String s = new String("abc);方式创建对象,在内存中创建了几个对象?两个:一个是堆空间中new结构,另一个是char[]对应的常量池中的数据"abc"*/@Testpublic void test2() {//通过字面量定义的方式:此时的s1和s2的数据javaEE生命在方法区中的字符串常量池中.String s1 = "javaEE";String s2 = "javaEE";//通过new + 构造器的方式:此时的s3和s4保存的地址值是数据在堆空间中开辟空间后对应的地址值.String s3 = new String("javaEE");String s4 = new String("javaEE");System.out.println(s1 == s2);//trueSystem.out.println(s1 == s3);//falseSystem.out.println(s1 == s4);//falseSystem.out.println(s3 == s4);//falseSystem.out.println(s3.equals(s4));//trueSystem.out.println("=================================================");Person p1 = new Person("Tom",12);Person p2 = new Person("Tom",12);System.out.println(p1.name.equals(p2.name));//trueSystem.out.println(p1.name == p2.name);//true}
}//加入Java开发交流君样:756584822一起吹水聊天class Person{public String name;public int age;public Person(String name,int age) {this.name = name;this.age = age;}
}

图解:

new的结构是存在于堆中的,比如String s3 = new String("javaEE");

1.4 String 拼接字面量和变量的方式赋值

Demo:

package com.broky.commonClass;import org.junit.jupiter.api.Test;/*** String 的使用** @author 13roky* @date 2021-04-24 10:34*/
public class StringTest {/*1.常量与常量的拼接结果在常量池。且常量池中不会存在享同内容的常量。2.只要其中有一个是变量,结果就在堆中。3.如果拼接的结果调用intern()方法,返回值就会在常量池中。*/@Testpublic void test03() {String s1 = "javaEE";String s2 = "hadoop";String s3 = "javaEEhadoop";String s4 = "javaEE" + "hadoop";//引号中的为字面量,这里是字面量的拼接String s5 = s1 + "hadoop";String s6 = "javaEE" + s2;String s7 = s1 + s2;final String s8 = "hadoop";String s9 = "javaEE" + s8;System.out.println(s3 == s4);//trueSystem.out.println(s3 == s5);//falseSystem.out.println(s3 == s6);//falseSystem.out.println(s3 == s7);//falseSystem.out.println(s5 == s6);//falseSystem.out.println(s5 == s7);//falseSystem.out.println(s6 == s7);//falseSystem.out.println(s3 == s9);//trueString s10 = s5.intern();//返回值得到的s8使用的常量值中已经存在的”javaEEhadoop“(s5.intern返回的时常量池中对应的内存地址)System.out.println(s3 == s10);//true}    
}

图解:

  • 常量与常量的拼接,结果直接保存在常量池中。如String s4 = “javaEE” + “hadoop”;,如果常量池中存在“javaEEhadoop”,那么s4直接指向其地址。
  • 只要拼接赋值时,其中有一个是变量,那么结果就会存在于堆中,如String s5 = s1 + “hadoop”;,栈中的变量名s5指向堆中对应的地址0x0001,堆中的地址又指向常量池的地址0x1214。
  • s5指向的是堆中的内存地址0x0001,但是方法s5.intern返回的直接是常量池中的地址。所以String s10 = s5.intern();这行代码会让s10直接指向常量池对应的内存地址。
package com.broky.commonClass.exer;import java.util.Arrays;/*** @author 13roky* @date 2021-04-26 7:27*/
public class StringValueChangeEx {String str = new String("good");char[]  ch = {'t','e','s','t'};public void change(String str,char ch[]){str = "test ok";ch[0] = 'b';}
//加入Java开发交流君样:756584822一起吹水聊天public static void main(String[] args) {StringValueChangeEx test01 = new StringValueChangeEx();test01.change(test01.str, test01.ch);//这里涉及字符串的拼接,所以会用toString方法,而char中的toString返回的是哈希值,所以要用arrays类System.out.println(test01.str + " and " + Arrays.toString(test01.ch));   //good and [C@2f4d3709System.out.println(test01.str); //goodSystem.out.println(test01.ch);  //test}
}

1.5 String类常用方法

  • int Length():返回字符的长度:return value.Length
  • char charAt(int index):返回某索引处的字return vaLue[index]
  • booLean isEmpty():判断是否是空字符牢:return value. Length == 0`
  • String toLowercase():使用默认语言环境,将 String中的所有字符转换为小写
  • String toUppercase():使用默认语言环境,将 String中的所有字符转换为大写
  • String trim():返回字符的副本,忽略前导空白和尾部空白
  • boolean equals(Object obj):比较字符的内容是否相同
  • booLean equalsIgnoreCase(String anotherString):与equls方法类似,忽略大小写
  • String concat(string str):将指定字符牢连接到此字符的结尾。等价于用"+"
  • int compare To(String anotherstring):比较两个字符的大小
  • String substring(int beginIndex):返回一个新的字符,它是此字符的从 beginIndex开始截取到最后一个子字符串.
  • String substring(int beginIndex, int endindex):返回一个新字符串,它是此字符从beginIndex开始截取到endIndex(不包含)的一个子字符串.

Demo:

package com.broky.commonClass;import org.junit.jupiter.api.Test;import java.util.Locale;/*** @author 13roky* @date 2021-04-26 21:47*/
public class CommonMethod {/*int Length():返回字符的长度: return value.Lengthchar charAt( nt index):返回某索引处的字return vaLue[index]booLean isEmpty():判断是否是空字符牢: return value. Length == 0String toLowercase():使用默认语言环境,将 String中的所有字符转换为小写String toUppercase():使用默认语言环境,将 String中的所有字符转换为大写String trim():返园字符的副本,忽略前导空白和尾部空白boolean equals(Object obj):比较字符的内容是否相同booLean equalsIgnoreCase(String anotherString):与equls方法类似,忽略大小写String concat(string str):将指定字符牢连接到此字符的结尾。等价于用"+"int compare To(String anotherstring):比较两个字符的大小String substring(int beginIndex):返回一个新的字符,它是此字符的从 beginIndex开始截取到最后一个子字符串.String substring(int beginIndex, int endindex):返回一个新字符串,它是此字符从beginIndex开始截取到endIndex(不包含)的一个子字符串.*/@Testpublic void test01(){String s1 ="HelloWorld";System.out.println(s1.length());System.out.println(s1.charAt(0));System.out.println(s1.charAt(9));System.out.println(s1.isEmpty());String s2 = s1.toLowerCase();System.out.println(s1);System.out.println(s2);String s3 = "    he  llo    world    ";String s4 = s3.trim();System.out.println(s3);System.out.println(s4);}@Testpublic void test02(){String s1 = "HelloWorld";String s2 = "helloworld";System.out.println(s1.equals(s2));System.out.println(s1.equalsIgnoreCase(s2));String s3 = "abc";String s4 = "def".concat(s3);System.out.println(s4);String s5 = "abc";String s6 = new String("abd");System.out.println(s5.compareTo(s6));String s7 = "13roky学Java";String s8 = s7.substring(2,6);System.out.println(s7);System.out.println(s8);}
}
  • boolean endsWith(String suffix):测试此字符串是否以指定的后缀结束
  • boolean startsWith(String prefix):测试此字符串是否以指定的前缀开始
  • boolean startsWith(String prefix, int toffset):测试此字符串从指定索引开始的子字符串是否以指定的前缀开始
  • boolean contains(CharSequence s):当且仅当此字符串包含指定的char值序列时,返回true
  • int indexOf(String str): 返回指定子字符串在此字符串中第一次出现处的索引
  • int indexOf(String str,int fromIndex):返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引处开始
  • int lastIndexOf(String str):返回指定子字符串在此字符串中最右边出现处的索引
  • int lastIndexOf(String str,int fromIndex):返回指定子字符串在此字符串中最后一次出现处的索引,从指定的索引开始反向搜索(从右往左搜索)indexOf和lastindexOf方法如果未找到,返回结果都是-1

Demo:

package com.broky.commonClass;import jdk.jfr.DataAmount;
import org.junit.jupiter.api.Test;import java.util.Locale;/*** @author 13roky* @date 2021-04-26 21:47*/
public class CommonMethod {/*boolean endsWith(String suffix):测试此字符串是否以指定的后缀结束boolean startsWith(String prefix):测试此字符串是否以指定的前缀开始boolean startsWith(String prefix, int toffset):测试此字符串从指定索引开始的子字符串是否以指定的前缀开始boolean contains(CharSequence s):当且仅当此字符串包含指定的char值序列时,返回trueint indexOf(String str): 返回指定子字符串在此字符串中第一次出现处的索引int indexOf(String str,int fromIndex):返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引处开始int lastIndexOf(String str):返回指定子字符串在此字符串中最右边出现处的索引int lastIndexOf(String str,int fromIndex):返回指定子字符串在此字符串中最后一次出现处的索引,从指定的索引开始反向搜索(从右往左搜索)indexOf和lastindexOf方法如果未找到,返回结果都是-1*/@Testpublic void test03(){String str1 = "helloworld";boolean b1 = str1.endsWith("rld");System.out.println(b1);boolean b2 = str1.startsWith("He");System.out.println(b2);boolean b3 =str1.startsWith("ll",2);System.out.println(b3);String str2 = "wo";System.out.println(str1.contains(str2));System.out.println(str1.indexOf("lol"));System.out.println(str1.indexOf("l"));System.out.println(str1.indexOf("lo", 5));String str3 = "hellorworld";System.out.println(str3.lastIndexOf("or"));System.out.println(str3.lastIndexOf("or",6));}//加入Java开发交流君样:756584822一起吹水聊天//什么情况下,indexOf(str)和lastIndexOf(str)返回值相同?//情况一:存在唯一的一个str.//情况二:不存在str
}

替换:
String replace(char oldChar,char newChar):返回一个新的字符串,它是通过用newChar替换oldChar String replace(CharSequence target,CharSequence replacement):使用字面值替换序列替换此字符串所有匹配字面值目标序列的子字符串.
String replaceAll(String regex,String replacement):使用给定的replacement替换此字符串多有匹配给定的正则表达式的子字符串
String replaceFirst(String regex,String replacement):使用给定的replacement替换此字符串匹配给定的正则表达式的第一个子字符串.
匹配:
boolean matches(String regex):告知此字符串是否匹配给定得正则表达式
切片:
String[] split(String regex):根据给定的正则表达式的匹配拆分此字符串
String[] split(String regex,int limit):根据匹配给定的正则表达式来分此字符串,最多不超过limit个,如果超出,剩下的全部都放到最后一个元素

package com.broky.commonClass;import jdk.jfr.DataAmount;
import org.junit.jupiter.api.Test;import java.util.Locale;/*** @author 13roky* @date 2021-04-26 21:47*/
public class CommonMethod {/*替换//加入Java开发交流君样:756584822一起吹水聊天String replace(char oldChar,char newChar):返回一个新的字符串,它是通过用newChar替换oldCharString replace(CharSequence target,CharSequence replacement):使用字面值替换序列替换此字符串所有匹配字面值目标序列的子字符串.String replaceAll(String regex,String replacement):使用给定的replacement替换此字符串多有匹配给定的正则表达式的子字符串String replaceFirst(String regex,String replacement):使用给定的replacement替换此字符串匹配给定的正则表达式的第一个子字符串.匹配:boolean matches(String regex):告知此字符串是否匹配给定得正则表达式切片:String[] split(String regex):根据给定的正则表达式的匹配拆分此字符串String[] split(String regex,int limit):根据匹配给定的正则表达式来分此字符串,最多不超过limit个,如果超出,剩下的全部都放到最后一个元素*/@Testpublic void test04(){String str1 = "13roky学Java";String str2 = str1.replace('学','写');System.out.println(str1);System.out.println(str2);String str3 = str1.replace("13roky", "geek");System.out.println(str3);System.out.println("=====================================================");String str = "123klnjklsdnafdmc123pojasvapos";String string = str.replace("\\d+",",").replaceAll("^,|,$","|");System.out.println(string);str = "12345";//加入Java开发交流君样:756584822一起吹水聊天//判断str字符串中是否全部有数字组成,即有1-n个数字组成boolean matches = str.matches("\\d+");System.out.println(matches);String tel = "0571-4534289";//判断一个电话是否是杭州的boolean result = tel.matches("0571-\\d{7,8}");System.out.println(result);System.out.println("================================================");str = "hello|world|java";String[] strs = str.split("\\|");for (int i = 0; i < strs.length; i++) {System.out.println(strs[i]);}System.out.println();str2 = "hello.world.java";String[] strs2 = str2.split("\\|");for (int i = 0; i < strs2.length; i++) {System.out.println(strs2[i]);}}
}

1.6 String与其它类型的转换

demo:

package com.broky.commonClass;import org.junit.jupiter.api.Test;import java.io.UnsupportedEncodingException;
import java.util.Arrays;/*** String类与其他结构之间的转换* String 与 char[] 之间的转换* String 与 byte[] 之间的转换** @author 13roky* @date 2021-05-02 19:33*/
public class StringChange {/*复习:String与其他数据类型,包装类之间的转换String --> 基本数据类型、包装类:调用包装类的静态方法:parseXxx(str)基本数据类型、包装类 ——》String:调用String重载的valueOf(xxx) 或者直接拼接“”*/@Testpublic void test(){String str = "123";//int num = (int) str;   只有子父类的关系才可以使用强制类型转换int num = Integer.parseInt(str);String str2 = String.valueOf(num);String str3 = num + "";}/*//加入Java开发交流君样:756584822一起吹水聊天String 与 char[] 之间的转换String --> char[] :String类中的toCharArray()方法char[] --> String :String的构造器*/@Testpublic void test02(){String str = "abcde";char[] c1 = str.toCharArray();for (int i = 0; i < c1.length; i++) {System.out.println(c1[i]);}char[] c2 = new char[]{'f','s','c','a'};String str2 = new String(c2);System.out.println(str2);}/*String 与 byte[] 之间的转换编码:String --> byte[] :调用String的getBytes()解码:转化的时候会涉及编码和解码编码:字符串 --> 字节 (看得懂转换为看不懂的二进制数据)解码 字节 --> 字符串 (看不懂的二进制数据转换为看得懂)*/@Testpublic void test03() throws UnsupportedEncodingException {String str = "abc123此方";// 使用ide默认的编码集进行转换byte[]  b1 = str.getBytes();// 字节byte类型 采用ASCLL编码 由于ASCLL中没有中文编码,所以中文会转为默认的编码如(UTF-8,UTF-8中一个汉字占三位)然后再转为ASCLLSystem.out.println(Arrays.toString(b1));// 使用 gbk 字符集进行编码,需要处理异常byte[] b2 = str.getBytes("gbk");System.out.println(Arrays.toString(b2));System.out.println("=======================================");// 使用ide默认的编码集进行解码String str2 = new String(b1);System.out.println(str2);// 出现乱码。原因:编码及和解码集不一致倒置的String str3 = new String(b2);System.out.println(str3);// 指定编码集String str4 = new String(b2, "gbk");System.out.println(str4);}
}

1.7 常见算法题目

  1. 模拟一个trim方法,去除字符串两端的空格。
  2. 将一个字符串进行反转。将字符串中间指定部分进行反转。比如“abcdefg”反转为“abfedcg”。
  3. 获取一个字符串在另一个字符串中出现的次数。
  4. 获取两个字符串中最大的相同字符串。
  5. 将字符串中字符进行自然顺序排序。Arrays.sort()

最后,祝大家早日学有所成,拿到满意offer

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/299372.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Juster的MVP奋斗之路

大家好是朱震&#xff08;juster zhu&#xff09;MVP唯一id是5004326&#xff0c;这里主要给大家分享一下参选上MVP喜悦。首先非常感谢大伙对我的支持&#xff0c;在过去的8个多月里几乎每天都在写博客和做视频以及回答技术问题中度过。整个过程非常艰苦&#xff0c;身体不好真…

被嫌弃的蝗虫的一生

全世界只有3.14 % 的人关注了爆炸吧知识转载来源&#xff1a;混子曰部分素材源于网络&#xff0c;版权归原作者所有如有侵权请留言联系删除&#xff0c;感谢合作选购数学科普正版读物严选“数学思维好物”送给孩子的阅读礼物 | 办公室神器有益孩子一生的玩具 | 居家高科…

直接裂开!京东二面被问SpringBoot整合MongoDB,我不会啊

开始进入正题 一、技术介绍 SpringBoot整合MongoDB的实现步骤一、技术介绍1.MongoDB是什么&#xff1f;二、使用步骤1.MongoDB是什么&#xff1f; MongoDB&#xff08;来自于英文单词“Humongous”&#xff0c;中文含义为“庞大”&#xff09;是可以应用于各种规模的企业、各…

复工后,看看他们都是怎么上班的!

全世界只有3.14 % 的人关注了爆炸吧知识来源&#xff1a;大叔爱吐槽 人民日报本周全国各地终于逐步复工&#xff01;听&#xff01;小伙伴在召唤你&#xff01;你大概从未想过&#xff0c;有一天自己竟会盼望上班&#xff1f;困守家中的20多天&#xff0c;积累了天量防疫知识&a…

使用 OpenLDAP 集中管理用户帐号

关键字&#xff1a; OpenLDAP ReiserFS SCTP nmon 正则表达式 使用轻量级目录访问协议&#xff08;LDAP&#xff09;构建集中的身份验证系统可以减少管理成本&#xff0c;增强安全性&#xff0c;避免数据复制的问题&#xff0c;并提高数据的一致性。随着 Linux&reg; 的不断…

【每日分享】我做程序员那些年犯下的罪,此时此刻我自己的笑出猪叫~

以前我刚入行&#xff0c;总是会犯这样几个常见错误&#xff0c;后面想起来是真的SB。当然每个程序员会犯错&#xff0c;重要的是从中吸取教训&#xff0c;得到成长。那么这些错误到底是什么呢&#xff1f;我来给大家盘点一下&#xff01;&#xff01;&#xff01; 当我感觉我…

解决ubuntu下eclipse 经常崩溃的问题

2019独角兽企业重金招聘Python工程师标准>>> ubuntu对SWT程序支持的不怎么好&#xff0c;基于SWT的eclipse在ubuntu下经常崩溃和失去响应&#xff0c;要解决这个问题需要1.需要卸载掉 overlay-scrollbar libwebkit-1.02.eclipse.ini中加入 -Dsun.awt.disablegrabtru…

揭秘神仙高校的课堂!网友跪了:这就是差距啊!

全世界只有3.14 % 的人关注了爆炸吧知识疫情之下&#xff0c;家家闭门谢客&#xff0c;宅着就是做贡献了。原本一晃而过的7天假期变得“漫长”&#xff0c;延迟复工、居家办公&#xff1b;学生党们把寒假过成了暑假。随着各高校公布延迟开学时间到二月底&#xff0c;各种网络直…

oracle中prad函数_024 SQL函数

1. 使用ORDER BY排序(1) ORDER BY 子句的作用是什么&#xff1f;用ORDER BY子句排序。用于对结果集进行排序处理&#xff0c;提供了升序排序&#xff08;ASC&#xff09;与降序排序&#xff08;DESC&#xff09;如果不指定排序规则默认为升序排序。在排序中也可以使用没有包括在…

世道变了,面试初级Java开发会问到Arrays!!!你不会还不知道吧!

一、基本定义 Arrays类&#xff0c;全路径java.util.Arrays&#xff0c;主要功能为操作数组&#xff0c;Arrays类的所有方法均为静态方法&#xff0c;所以 调用方式全部为Arrays.方法名 二、常用方法 1. <T> List<T> asList(T... a)可以将数组转化为相应的lis…

DNS(三)--子域授权和视图

实验题目&#xff1a;1.子域授权&#xff08;委派&#xff09;2.视图实验环境&#xff1a;1.vmware虚拟机2.linux子机两台3.XP测试机实验过程&#xff1a;一、子域授权在现实生活中我们世界互联网中的每个主机并不是在同一个域内&#xff0c;而是通过不同的依据将将其划分到不同…

11尺寸长宽 iphone_LED显示屏的尺寸规格计算方法

LED屏幕在生活中&#xff0c;随处可见&#xff0c;显示屏、广播屏等等&#xff0c;但是LED尺寸怎么计算的&#xff0c;你知道吗&#xff1f;今天我们来了解一下LED屏幕尺寸的计算方法。一、点间距的计算1、各单元板常见型号及尺寸LED屏普遍是用单元板做的。LED单元板常见型号及…

盘点数学里十大不需语言的证明

全世界只有3.14 % 的人关注了爆炸吧知识当谈到复杂数学定理的证明时&#xff0c;很多人常常为之色变&#xff0c;认为这只是一个枯燥的公式堆砌和深奥的数学推导过程。这当然是一个让笔者感到纠结的误解。因为数学证明中包含的美丽与精巧实在是一道亮丽的风景线&#xff0c;而这…

好端端的程序员,咋就成了新生代农民工!

实锤&#xff0c;程序员被划为新生代农民工&#xff0c;码农的称号终获官方认定&#xff0c;网上一片热议。虽然农民工的称呼有点突兀&#xff0c;然而更多的评论都是在羡慕程序员的高薪&#xff0c;尤其是那些能进一线大厂的幸运儿。往年.NET进大厂难&#xff0c;而今年腾讯、…

大厂Java初级开发工程师!!!面试必问项之Set实现类:TreeSet

一、TreeSet 概述 1、TreeSet是 SortedSet 接口的实现类&#xff0c; TreeSet 可以确保集合元素处于排序状态。 2、TreeSet顾名思义他内部维护的是一个TreeMap&#xff0c;底层是红黑二叉树&#xff0c;他使得集合内都是有序的序列。 3、Tree可以按照添加对象的指定属性&…

【Android笔记】如何创建列表视图3

接着上一篇实现一个带有复选框的列表视图&#xff0c;这要求对Adapter有比较清楚的理解。1. ArrayAdapter从Layout读取TextView控件&#xff0c;返回给ListView显示&#xff0c;这个处理在ArrayAdapter的getView方法里&#xff0c;我们可以继承这个类&#xff0c;覆盖getView&…

史上最硬核的数学老师!搞发明、造大炮,让战斗民族直叫爸爸,看完我跪了......

全世界只有3.14 % 的人关注了爆炸吧知识一直以来&#xff0c;有好多朋友在后台和知识君吐槽&#xff0c;自己在追逐菲尔兹奖的路上总被数学公式所绊倒&#xff0c;一见到数学公式就头疼&#xff01;这时&#xff0c;知识君就会搬出数学史上最萌的公式——“么么哒”公式&#x…

a标签传参接收_[pyecharts1.8] 系列配置之标签设置

今日心情 &#xff1a;em....又是一堆蛋疼的事情堆积的一周...文章会迟到&#xff0c;但不会缺席&#xff0c;准备好脑子接收下[pyecharts1.8] 系列配置之标签设置本文档(以及pyecharts使用手册中的其他文档)将会持续更新。 有些内容标记为待更新的&#xff0c;有时间我会补充上…

这个寒冬,如何让我们的身价翻倍?

这个寒冬&#xff0c;如何让我们的身价翻倍&#xff1f; ——《深入理解.NET&#xff08;第2版英文版&#xff09;》读后感 微软4大名著评选结果揭晓 在开始正文之前&#xff0c;我先给大家讲一个真实的故事&#xff1a;我有一位朋友&#xff0c;他的一位同学原来是做测试的&am…

ASP.NET Core 配置 - 创建自定义配置提供程序

ASP.NET Core 配置 - 创建自定义配置提供程序在本文中&#xff0c;我们将创建一个自定义配置提供程序&#xff0c;从数据库读取我们的配置。我们已经了解了默认配置提供程序的工作方式&#xff0c;现在我们将实现我们自己的自定义配置提供程序。对于自定义配置提供程序&#xf…