当前位置: 首页 > news >正文

济南学网站建设哪里好seo视频教学网站

济南学网站建设哪里好,seo视频教学网站,无极网站建设,城市建设厅官方网站目录 面试题3.18 Java中有多少种数据结构,分别是什么? 面试题3.19 List、Set和Map的区别? 面试题3.20 List遍历方式有多少种 面试题3.21 Arraylist,Vector和Linkedlist 的区别 面试题3.22 Collection和Collections的区别 面试…

目录

面试题3.18  Java中有多少种数据结构,分别是什么?

面试题3.19  List、Set和Map的区别?

面试题3.20  List遍历方式有多少种

面试题3.21  Arraylist,Vector和Linkedlist 的区别

面试题3.22  Collection和Collections的区别

面试题3.23  Comparable接口用法 或者 comparable和comparator接口的用途? 列出他们的区别? 另一种问法,想实现些比较或排序,或统计元素的个数,要用到比较器。

面试题3.24  Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?

面试题3.25  Map怎么遍历? 怎么遍历一个map?写一下

面试题3.26 怎么获取Map所有的key,所有的value

面试题3.27  HashMap与Hashtable的区别

面试题3.28  HashMap HashSet的底层实现


面试题3.18  Java中有多少种数据结构,分别是什么?

【技术难度: 3    出现频率:3  】

栈:元素是先进后出,后进先出。

队列:元素存储是排列有序的,一定保证先进的先出,后进的后出。

数组:静态数组,指定类型,固定长度,元素存储地址是连续的。

向量:动态数组,可以存储任何类型元素,动态长度,元素存储地址是连续的。

树:元素以树形结构存储,只有一个根节点。

List:是列表,有下标值,存储元素可以重复,遍历元素是有序的。

Set:是散列集(或称哈希集),无下标值,存储元素不可重复,遍历元素是无序的。

Map:是以键值对存储,一个key一个value,key不可以重复,value可以重复。

面试题3.19  List、Set和Map的区别?

【技术难度: 2    出现频率:2  】

1.List和Set是Collection的子接口,map不是;

2.List的底层是数组或链表实现,Set的底层是map而map的底层是哈希表或红黑树。

3.List和Set以单个元素的方式存储数据,但map是键值对的方式;

4.List是有序可重复的,Set是无序不可重复的;map中hashMap无序,LinkedHashMap有序,TreeMap排序,而且key不重复,value可重复;

5.List和Set可直接使用itertator来进行遍历,map需要先获取keySet或entrySet,通过它们来遍历。

面试题3.20  List遍历方式有多少种

【技术难度:  2   出现频率:2  】

1.下标遍历;

2.Iterator遍历;
通过
hasNext()方法检查序列中是否还有更多元素,以及通过next()方法获取序列中的下一个元素。

        // 使用while循环遍历List集合  while (iterator.hasNext()) {  // 获取下一个元素  String element = iterator.next();  // 打印元素  System.out.println(element);  }  

3.foreach遍历(最快)。List类的forEach() + Lambda表达式。

public class Main {  public static void main(String[] args) {  List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "David");  // 使用forEach() + Lambda表达式遍历List  names.forEach(name -> System.out.println(name));  }  
}

面试题3.21  Arraylist,Vector和Linkedlist 的区别

【技术难度: 2    出现频率:2  】

它们都是List接口的实现类。

ArrayList:

1.底层是数组,查询快增删慢,线程不安全,效率高;

  2.数组初始长度10,存满扩容,扩到原数组1.5倍

Vector:

1.与ArrayList类似,底层是数组,查询快增删慢,线程安全,效率(synchronized)

2.数组初始长度10,存满扩容,扩到原数组2倍

LinkedList:

1.底层是链表,查询慢增删快,线程不安全,效率高;

2.链表无扩容机制理论上可以无限扩容就是直接修改节点之间关联。

面试题3.22  Collection和Collections的区别

【技术难度: 2    出现频率:2  】

1.Collection是集合类的上级接口,继承于他的接口主要有Set和List;

2.Collections是针对集合的一个工具类,提供一系列静态方法实现对各种集合的搜索(二分查找)、排序、线程安全化等操作。

面试题3.23  Comparable接口用法 或者 comparable和comparator接口的用途? 列出他们的区别? 另一种问法,想实现些比较或排序,或统计元素的个数,要用到比较器。

【技术难度: 2    出现频率:  1 】

第一层:

这两个接口一般用来实现集合内排序,Comparator相对于Comparable更加灵活,耦合度更低,Comparable不但用于排序还可用与比较本类两个对象的大小。

第二层:
Comparable接口和他的compareTo()方法
Comparator接和它的compare()方法

Comparable接口里面有个compareTo()接口方法,当一个类的对象需要比较的时候,该类需要实现Comparable接口和他的compareTo()方法,当调用集合排序方法时,就会调用该类对象的compareTo()方法来实现对象的比较。

Comparator接是一个比较器接口,一般定义一个匿名类实现该接口和它的compare()方法,并创建对象,传入集合排序方法中。

第三层:
Comparable接口:

public class Person implements Comparable<Person> {  private String name;  private int age;  // 构造函数、getter和setter方法省略  @Override  public int compareTo(Person other) {  return Integer.compare(this.age, other.age); // 按年龄排序  }  public static void main(String[] args) {  List<Person> people = new ArrayList<>();  // 添加Person对象到列表中  people.add(new Person("Alice", 30));  people.add(new Person("Bob", 25));  people.add(new Person("Charlie", 35));  Collections.sort(people); // 按年龄排序  // 输出排序后的列表  for (Person person : people) {  System.out.println(person.getName() + " " + person.getAge());  }  }  
}

Comparator接口:

public class Person {  private String name;  private int age;  // 构造函数、getter和setter方法省略  
}  class AgeComparator implements Comparator<Person> {  @Override  public int compare(Person p1, Person p2) {  return Integer.compare(p1.getAge(), p2.getAge()); // 按年龄排序  }  
}  public class Main {  public static void main(String[] args) {  List<Person> people = new ArrayList<>();  // 添加Person对象到列表中  people.add(new Person("Alice", 30));  people.add(new Person("Bob", 25));  people.add(new Person("Charlie", 35));  Collections.sort(people, new AgeComparator()); // 按年龄排序,使用Comparator  // 输出排序后的列表  for (Person person : people) {  System.out.println(person.getName() + " " + person.getAge());  }  }  
}

面试题3.24  Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?

【技术难度: 2    出现频率: 2 】

1.Set里的元素是不能重复的;因为无论是HashSet还是TreeSet,其底层数据结构都不允许元素重复。

2.元素重复与否是使用equals()方法进行判断的;

3.==比较两个对象是比较对象的内存地址,equals()默认是使用==判断2个对象的内存地址是否相等,重写以后按照自定义规则比较2个对象。

面试题3.25  Map怎么遍历? 怎么遍历一个map?写一下

【技术难度: 2    出现频率:2  】

1.先调用map.keySet()方法获取所有的key,再通过这些key获取对应的value;

Map<String,Integer> map = new HashMap<>();
for(String key :map.keySet()){System.out.println(key + " - " + map.get(key));
}

2.先调用map.entrySet()方法获取所有的entry键值对对象,再从每个entry中取出key和value。

Map<String,Integer> map = new HashMap<>();
for (Map.Entry<String,Integer> entry :map.entrySet()) {System.out.println(entry.getKey() + " - " + entry.getValue());
}

面试题3.26 怎么获取Map所有的key,所有的value

 【技术难度: 2    出现频率:2  】

1.Map调用keySet()方法获取所有的key值,是一个Set集合。

2.Map调用values()方法获取所有的value值,是一个Collection集合。

3.调用map.entrySet()方法获取所有的entry键值对对象,getKey() 和 getValue()。

面试题3.27  HashMap与Hashtable的区别

【技术难度:2     出现频率:2  】

0. 注意Hashtable的t是小写。

1. 继承的父类不同。HashMap:继承自AbstractMap类,实现了Map接口。Hashtable:继承自Dictionary类,同样实现了Map接口。

2. HashMap不是线程安全的,Hashtable是安全的 (通过synchronized同步方法来实现,低效);

3. HashMap的key和value都允许null值,Hashtable的key和value都不允许null值如果存入null会抛出nullpointerException

4. HashMap数组初始长度16,扩容原数组的2倍,Hashtable数组初始长度11,扩容原数组的2倍 + 1。

5.计算hash值的方法

  • HashMap:为了提高计算效率,HashMap将哈希表的大小固定为2的幂,并对key的hashCode()返回值进行二次hash对哈希表的大小进行取模运算,以获得更好的散列效果。
  • Hashtable:直接使用key的hashCode()返回值对哈希表的大小进行取模运算来计算hash值。

 

 

面试题3.28  HashMap HashSet的底层实现

【技术难度: 2    出现频率:3  】

底层数据结构:

HashSet底层就是HashMap。HashMap底层是哈希表数据结构,jdk1.8开始,哈希表等于数组加链表加红黑树(二叉树的一种),数组的初始长度16,加载因子0.75,扩容到原数组的2倍。当单向链表的节点个数大于8并且数组长度大于64时,链表转红黑树,当节点的个数小于6,红黑树转回链表。

插入函数:

调用map.put()方法时,会调用key的hashCode()方法计算哈希值,这个哈希值会经过再次计算得出最终哈希值,然后根据这个哈希值计算数组的存储下标,此时会有两种情况:

1.如果数组存储下标对应的空间没有值,key和value直接存入;Jdk1.8后在链表末尾插入。

2.如果数组存储下标对应的空间有值(单向链表或红黑树),就继续调用key的equals()方法和其中每个节点的key比较,若返回true,后面的value覆盖前面的value,若直到最后一个都是返回false,key和value存入。


------------------------END-------------------------

才疏学浅,谬误难免,欢迎各位批评指正。

http://www.shuangfujiaoyu.com/news/7494.html

相关文章:

  • 最新网站建设常见问题百度新闻网
  • 完善集团网站功能建设百度指数查询官方下载
  • 网站想换个风格怎么做宁波seo
  • 辽宁东方建设工程有限公司网站seo关键词排名优化费用
  • 大渡口网站建设哪家好广告宣传费用一般多少
  • 支部网站建设排名优化软件点击
  • 网站收录问题爱站网的关键词是怎么来的
  • 花生壳一个端口做网站seo管理工具
  • 企业网站建设的必要性十大搜索引擎排名
  • wordpress固定链自定义结构杭州seo排名费用
  • 做企业网站不好混优化营商环境条例全文
  • 北太平庄做网站公司全国疫情高峰感染高峰进度
  • 淘宝运营跟做网站哪种工资高百度怎么推广网站
  • 广州金将令做网站怎么样如何建立个人网站的步骤
  • 天津网站建设公司建站宝盒
  • 网站建设 永灿 竞争云搜索app官网
  • 网站用户管理系统百度指数怎么看排名
  • 看网站的浏览器企业网络营销策略分析案例
  • 做网站里面内容编写最新军事新闻
  • 网站怎么做伪静态iis7.0seo 排名 优化
  • 可信网站认证多少钱网络营销的特点不包括
  • 网站添加邮件发送怎么做小红书软文推广
  • 太原建站公司网站域名怎么注册
  • 福州seo网站推广优化官网咨询
  • 模块化网站开发国外最好的免费建站
  • 北京大兴最专业的网站建设公司许昌seo公司
  • 织梦可以做B2B信息发布网站吗seo外包如何
  • 永兴县网站建设公司哪家好温州seo顾问
  • 商城网站建设解决方案百度认证营销顾问
  • 制作个人网站怎么做合肥百度竞价推广代理公司