11月13日面试

今天面试总结:

  • List,set,Map接口的区别,list如何去重?

回答的时候,仅仅在想接口中的方法的区别。就是一脸懵逼,如何从方法中去比较异同,后来查了查,是从数据结构去解释。

  1. List和Set接口的基类是Collections, Map就是map类集合的基类。
  2. List的实现有LinkedList链表结构,ArrayList数组结构。Set有hash表结构HashSet,红黑树结构TreeSet。 Map有哈希结构HashMap,红黑树结构TreeMap。
  3. List及实现类是可变大小的列表,适用于按数组索引访问元素。Set接口继承了Collection接口,但是它不允许集合中存在重复项。Map中以键-值对形式存储数据。

去重的方法:(三种)

  1. 借助Set结构,不允许元素重复的特性
public void removeDuplicate(ArrayList<String> list){
	HashSet<String> set = new HashSet<>();
	List<String> result = new Array<>();
	list.forEach(element->{
		if(set.add(element)){
			result..add(element);
		}
	});
	list.clear();
    list.addAll(result);
}
  1. 利用LinkedHashSet不能重复添加数据并能保持添加顺序的特性
public void removeDuplicate(ArrayList<String> list){
	LinkedHashSet<String> set = new LinkedHashSet<>(list.size());
	set.addAll(list);
    list.clear();
    list.addAll(set);
}
  1. 通过list的contains解决
public void removDuplicate(ArrayList<String> list){
	ArrayList<String> result= new Array<>();
	list.forEach(element->{
		if(!result.contains(element)){
			result.add(element);
		}
	});
	list.removeAll();
	list.addAll(result);
}

java程序在执行过程中,类,对象以及它们成员加载、初始化的顺序如下:

  1. 首先加载要创建对象的类及其直接与间接父类。
  2. 在类被加载的同时会将静态成员进行加载,主要包括静态成员变量的初始化,静态语句块的执行,在加载时按代码的先后顺序进行。
  3. 需要的类加载完成后,开始创建对象,首先会加载非静态的成员,主要包括非静态成员变量的初始化,非静态语句块的执行,在加载时按代码的先后顺序进行。
  4. 最后执行构造器,构造器执行完毕,对象生成。

并发

这个问题问了无数次,每次都答不好,心态炸了。。。
晚上整理了下,知识树体系。
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章