单列集合Collection-双列集合Map

文章目录

      • 单列集合Collection
        • 一、Collection
          • 1.1 增、删、改、查
          • 1.2 常用API
          • 1.3 三种循环遍历方式
        • 二、常见数据结构
          • 2.1栈
          • 2.2 队列
          • 2.3数组
          • 2.4 链表
          • 2.5 二叉树
            • 2.5.1 二叉查找树
            • 2.5.2 平衡二叉树
            • 2.5.3 红黑树
        • 三、List:ArrayList、LinkedList
          • 3.1 List常用API
          • 3.2 四种循环遍历 3+1
          • 3.3 ArrayList
            • 并发修改异常
          • 3.4 LinkedList
        • 四、Set:HashSet、TreeSet、LinkedHashSet
          • 4.1 HashSet
            • 4.1.1原理:
            • 4.1.2去重复:
          • 4.2 LinkedHashSet
            • 4.2.1原理:
          • 4.3 TreeSet
            • 4.3.1 底层基于红黑树的数据结构实现排序的;
            • 4.3.2排序规则自己制定(2种方式
        • 五、可变参数
          • 5.1、注意事项:
        • 六、Collections工具类
          • 6.1 常用API
          • 6.2、 Collections.sort自定义类排序方式:
            • 6.2.1、自定义类中排序
            • 6.2.2 Collections.sort(集合对象,new Comparator<>)排序
      • 键值对集合Map
        • 一、Map集合体系特点:
        • 二、Map集合实现类特点:
          • 1.HashMap:元素按照键是无序,不重复,无索引,值不做要求。(与Map体系一致)
          • 2.LinkedHashMap:元素按照键是有序,不重复,无索引,值不做要求
          • 3.TreeMap:元素按照键是排序,不重复,无索引的,值不做要求
        • 三、Map集合常用API
        • 四、遍历方式
          • 4.1 键找值遍历方式
          • 4.2 键值对遍历方式 .entrySet
          • 4.3 Lambda表达式遍历
          • 案例:
        • 五、集合的嵌套

单列集合Collection

Collection
List
Set
ArrayList
LinkedList
HashSet
TreeSet
LinkedHashSet
一、Collection
1.1 增、删、改、查
//Collection c = new ArrayList<>();
		List<String> c = new ArrayList<>();
		//增加
        c.add("小丽");
  		System.out.println(c);
        //删除
        c.remove("小熊");
        System.out.println(c);
		//改
		//c.set(0,"丽姐");List才有索引改
		//查
		c.get(i);
1.2 常用API
		Collection<String> c = new ArrayList<>();       
		//1.清空集合
//        c.clear();
//        System.out.println(c);
        //2.判断集合是空为ture
        System.out.println(c.isEmpty());
        //3.集合的大小c.size()
        System.out.println(c.size());
        //4.判断是否有某个元素
        System.out.println(c.contains("小熊"));
		//5.集合转数组Object
        Object[] name = c.toArray();
        System.out.println(Arrays.toString(name));
		//6.查
		//c.get(i);
 		//7.删除
        c.remove("小熊");
		//8.把一个集合添加到另外一个集合
        Collection<String> c1 = new ArrayList<>();
        c1.add("洋洋");
        c.addAll(c1);三种循环遍历
1.3 三种循环遍历方式
		Collection<String> c = new ArrayList<>(); 
		//1.1得到当前集合的迭代器对象
		//迭代器注意越界,默认指向当前集合索引0位置
        //不能遍历数组
        Iterator<String> it = c.iterator();
        //1.2定义while循环,it.hashNext()去看是否有值,
        while(it.hasNext()){
   
            //取元素it.next()
            String ele = it.next();
            System.out.println(ele);
        }
        //2.增强for循环遍历 c.for
		//集合数组都可以遍历
        for (String s : c) {
   
            System.out.println(s);
        }
        //3.Lambda表达式 只能简化含有一个抽象方法的接口 c.forEach(new Consumer)
        c.forEach(s -> System.out.println(s));
        //c.forEach(System.out::println);
  • 支持泛型,只能支持引用类型
  • List、Set两大家族
  • 集合中存的是对象地址
二、常见数据结构
2.1栈
  • 压栈 push,弹栈pop,先入后出,后入先出
2.2 队列
  • 数据从后端入队,从前端离队 先进先出,后进后出
2.3数组
  • 查询速度快(根据地址值、索引查询快)

  • 增加、删除效率低 (要迁移元素

2.4 链表
  • 数据+下一个节点地址^

  • 链表查询慢,无论查询哪个元素,都要从头开始找

  • 增加和删除相对快

  • 双链表 首尾增删极快、单链表

2.5 二叉树
  • 父节点地址 值 左节点地址 右节点地
  • 度 、高度、层、兄弟节点
2.5.1 二叉查找树

左节点<根节点<右节点

  • 目的:提高检索数据的性能
2.5.2 平衡二叉树

任意节点位置左右子树高度差不超过1

  • 左左 右旋
  • 左右 左右旋
  • 右右 左旋
  • 右左 右左旋
2.5.3 红黑树
  • 根节点必须为黑色
  • 不能出现两个红色连续 ,父节点改为黑色(可黑黑根节点)
  • 每条路径上黑节点相同
  • 默认用红色,效率高
三、List:ArrayList、LinkedList

List:有序,有索引,可重复

3.1 List常用API
 		List<String> list = new ArrayList<>();
        list.add("Java");
        list.add("MySql");
        System.out.println(list);
        //根据索引添加元素list.add(i,"修改内容")
        list.add(0,"c语言"

你可能感兴趣的:(Java集合,数据结构,链表,java)