总结
总体来说,如果你想转行从事程序员的工作,Java开发一定可以作为你的第一选择。但是不管你选择什么编程语言,提升自己的硬件实力才是拿高薪的唯一手段。
如果你以这份学习路线来学习,你会有一个比较系统化的知识网络,也不至于把知识学习得很零散。我个人是完全不建议刚开始就看《Java编程思想》、《Java核心技术》这些书籍,看完你肯定会放弃学习。建议可以看一些视频来学习,当自己能上手再买这些书看又是非常有收获的事了。
jdk 7 : 新来元素a放到数组中,指向已存在的旧元素。
jdk 8 : 已存在的旧元素在数组中,指向新来元素a
底层为“数组+链表”,数组初始容量为16,当如果使用率超过0.75(16*0.75=12)就会扩大容量为原来的2倍。(16扩容为32,依次为64,128…等)
重写equals()方法的时候一般都需要同时复写hashCode()方法。通常参与计算hash值的对象的属性也应该参与到equals()中进行计算
1、LinkedHashSet 是 HashSet 的子类,也是根据元素的 hashCode 值来决定元素的存储位置,但它同时使用双向链表维护元素的次序,这使得元素看起来是以插入顺序保存的。
2、LinkedHashSet插入性能略低于 HashSet,但在迭代访问(遍历) Set 里的元素时有很好的性能。
3、LinkedHashSet 不允许集合元素重复。
1、TreeSet 是 SortedSet 接口的实现类,TreeSet 可以确保集合元素处于排序状态。元素应为相同类的对象。
2、TreeSet底层使用红黑树结构存储数据。
3、TreeSet 两种排序方法:自然排序和定制排序。默认情况下,TreeSet 采用自然排序。
4、自然排序
①TreeSet 会调用集合元素的 compareTo(Object obj) 方法来比较元素之间的大小关系,然后将集合元素按条件排列。如果试图把一个对象添加到 TreeSet 时,则该对象的类必须实现 Comparable 接口。实现 Comparable 的类必须重写compareTo(Object obj) 方法,两个对象通过compareTo(Object obj) 方法的返回值来比较大小。
②向 TreeSet 中添加元素时,只有第一个元素无须比较compareTo()方法,后面添
加的所有元素都会调用compareTo()方法进行比较。
③因为只有相同类的两个实例才会比较大小,所以向 TreeSet 中添加的应该是同
一个类的对象。
④对于 TreeSet 集合而言,它判断两个对象是否相等的唯一标准是两个对象通过 compareTo(Object obj) 方法比较的返回值。
import java.util.Iterator;
import java.util.TreeSet;
/**
-
@Author: Yeman
-
@Date: 2021-09-16-16:48
-
@Description:
*/
class Student implements Comparable{
String name;
int age;
public Student() {
}
public Student(String name, int age) {
this.name = name;
this.age = age;
}
@Override
//姓名从小到大,年龄从大到小排列
public int compareTo(Object o) {
if (o instanceof Student){
Student student = (Student) o;
int nameResult = this.name.compareTo(student.name);
if (nameResult == 0){
return -Integer.compare(this.age,student.age);
}else {
return nameResult;
}
}else throw new RuntimeException(“类型不匹配”);
}
@Override
public String toString() {
return “Student{” +
“name='” + name + ‘’’ +
“, age=” + age +
‘}’;
}
}
public class TreeSetTest {
public static void main(String[] args) {
TreeSet treeSet = new TreeSet();
treeSet.add(new Student(“Tom”,18));
treeSet.add(new Student(“Tom”,22));
treeSet.add(new Student(“jim”,18));
treeSet.add(new Student(“Anne”,19));
treeSet.add(new Student(“Lily”,25));
treeSet.add(new Student(“LiLei”,25));
Iterator iterator = treeSet.iterator();
while (iterator.hasNext()){
System.out.println(iterator.next());
}
}
}
5、定制排序
①定制排序,通过Comparator接口来实现,需要重写compare(T o1,T o2)方法。
②要实现定制排序,需要将实现Comparator接口的实例作为形参传递给TreeSet的构造器。
③仍然只能向TreeSet中添加类型相同的对象。否则发生ClassCastException异常。
④使用定制排序判断两个元素相等的标准是:通过Comparator比较两个元素返回了0。
import java.util.Comparator;
import java.util.Iterator;
import java.util.TreeSet;
/**
-
@Author: Yeman
-
@Date: 2021-09-16-16:48
-
@Description:
*/
class Student{
String name;
int age;
public Student() {
}
public Student(String name, int age) {
独家面经总结,超级精彩
本人面试腾讯,阿里,百度等企业总结下来的面试经历,都是真实的,分享给大家!
Java面试准备
准确的说这里又分为两部分:
- Java刷题
- 算法刷题
Java刷题:此份文档详细记录了千道面试题与详解;
与详解;
[外链图片转存中…(img-AmDmgng3-1715453773723)]
[外链图片转存中…(img-xaMUbM0t-1715453773723)]