ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

20220806 第七小组 王茜 学习笔记

2022-08-06 19:04:43  阅读:135  来源: 互联网

标签:HashMap ArrayList list 笔记 20220806 接口 集合 排序 王茜


一: 

List:数据是有顺序(添加的先后顺序)的,数据是可以重复。
 ArrayList:内部结构是数组。比较适合做高频率的查找,遍历。
 LinkedList:双向链表。比较适合做高频率的新增和删除。
 Vector:和ArrayList几乎一模一样。
  
  面试题:
  1.Collection和Map接口的区别
  2.ArrayList和LinkedList的区别
  3.ArrayList和Vector的区别

二:

Collection接口:
   List:有顺序,元素可以重复,顺序指的是添加的先后顺序
   Set:没有顺序,元素不可以重复,顺序指的是添加的先后顺序
 
       Set其实是有顺序,内部有一个专门排序的算法。
       1.所谓的无序不等于随机
       2.所谓的无序指的是没有按照添加的先后顺序,其实内部是做了排序的。
 
   面试题:
   1.List和Set的区别
   2.HashSet和LinkedHashSet的区别和联系

三:

TreeSet
  排序规则:
   要排序的对象的类必须实现Comparable接口

四:

LinkedHashSet:在添加数据的同时维护数据的添加顺序
   效率要比HashSet略低一些。

五:

比较接口:
  Comparable接口:自然排序,排序规则是固定。
  Comparator接口:临时排序

六:

Map接口:
  1.存储对值K-V key-value
  2.key不能重复,value是可以重复的
  3.没有顺序(添加的先后顺序)
 
  HashMap内部存储结构:
  jdk1.7之前:链表 + 数组
  jdk1.7及之后:链表 + 数组 + 红黑树
 
  HashMap基本上面试90%问原理!!!

七:

Hashtable和HashMap几乎一模一样
 
  面试题:
  Hashtable和HashMap的区别
  1.HashMap是线程异步,线程不安全的,Hashtable是线程同步,线程安全
  2.HashMap的key是可以为null的,Hashtable是不可以为null

八:

 Properties:属性
   Properties是Hashtable的子类,更多地是用来操作属性文件。

九:

 List集合的遍历:

import java.util.Iterator;
import java.util.LinkedList;
import java.util.Objects;

/**
 * 迭代器删除元素
  */
public class Ch04  {
    public static void main(String[] args) {
        LinkedList<String> list= new LinkedList<>();
        list.add("tom");
        list.add("lucy");
        list.add("lucy");
        list.add("lucy");
        list.add("jerry");
//        1、普通for循环
        for (int i = 0; i < list.size(); i++) {
            if (Objects.equals(list.get(i), "lucy")) {
                list.remove(i);
                i--;
            }
        }
//         2.foreach语句
        for (String s : list) {
            System.out.println(s);
        }
//        3、使用迭代器
        Iterator<String> iterator = list.iterator();
        while (iterator.hasNext()){
            String s = iterator.next();
            if (Objects.equals(s,"lucy")){
                iterator.remove();
            }
        }
                // 4.增强for循环
        for (String s : list) {
            if(Objects.equals(s,"lucy")){
                list.remove(list.indexOf(s));
            }
        }
        System.out.println(list);
    }
}
            

十:

  其他的集合:
  1.LinkedHashMap,在HashMap的基础上维护了一个双向链表。
  2.TreeMap:天然支持排序
  3.Collections:Collections是一个工具类

十一:

 面试题:
   线程安全问题:
   迭代器是依赖于集合而存在,在判断成功以后,集合中新增了元素,
   迭代器不知道,所以就报错。
 
   解决:
   1.迭代器遍历元素,迭代器删除元素
   2.普通for循环遍历,集合删除

十二:

集合需要掌握的:
1.如何创建需要的集合。多态
2.主要用到的是List和Map
3.各种区别?
4.各种集合API的调用
5.两个比较接口
6.各种集合的特点,从接口层面,到实现类层面
7.重点集合的内部结构。ArrayList,HashSet,HashMap
8.各种集合的遍历
9.并发问题


最重要的集合:
ArrayList、HashMap

积压的问题:
1.synchronize原理
2.ReentrantLock原理
3.ArrayList原理
4.LinkedList原理
5.HashMap原理***************
6.HashSet原理

List->Map->Set

标签:HashMap,ArrayList,list,笔记,20220806,接口,集合,排序,王茜
来源: https://www.cnblogs.com/wx1019/p/16557638.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有