总结:数组,集合(list,Map)。。。。。《干货》持续更新。。。。。

本文详细介绍了Java中的数据结构,包括栈、队列、数组和链表的基础知识。接着,文章深入讨论了Java集合框架,如List、Set、Map的特性、遍历方式以及异常处理。此外,还涵盖了ArrayList、LinkedList、HashSet、TreeSet等具体实现类的构造方法和成员方法。文章最后提及了多态、抽象类和接口的重要性,以及StringBuilder类的使用和转换,以及一些常用的API如Collections、Random、Scanner和Math等。
摘要由CSDN通过智能技术生成

数据类型

在这里插入图片描述
在这里插入图片描述

数据结构

1.1数据结构之栈和队列【记忆】

数据结构是计算机存储,组织数据的方式,是指相互之间存在一种或者多张特定关系的数据元素的集合

  • 栈结构

    ​ 先进后出
    在这里插入图片描述

  • 队列结构

    ​ 先进先出
    在这里插入图片描述

1.2数据结构之数组和链表【记忆】

  • 数组结构

    ​ 查询快、增删慢

在这里插入图片描述

  • 链表结构

    ​ 查询慢、增删快
    在这里插入图片描述

    存储
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    增加
    在这里插入图片描述
    在这里插入图片描述

    删除

在这里插入图片描述
在这里插入图片描述

数组

1.1什么是数组【理解】

​ 数组就是存储数据长度固定的容器,存储多个数据的数据类型要一致。

1.2数组定义格式【记忆】

1.2.1第一种

​ 数据类型[] 数组名

​ 示例:

int[] arr;        
double[] arr;      
char[] arr;
1.2.2第二种

​ 数据类型 数组名[]

​ 示例:

int arr[];
double arr[];
char arr[];
1.3.1什么是动态初始化

​ 数组动态初始化就是只给定数组的长度,由系统给出默认初始化值。

1.3.2动态初始化格式
数据类型[] 数组名 = new 数据类型[数组长度];

#### 访问元素
```java
数组名[索引];
1.4.1什么是静态初始化

​ 在创建数组时,直接将元素确定

1.4.2静态初始化格式
  • 完整版格式

    数据类型[] 数组名 = new 数据类型[]{
         元素1,元素2,...};
    
  • 简化版格式

    数据类型[] 数组名 = {
         元素1,元素2,...};
    

1.11数组遍历【应用】

  • 数组遍历:就是将数组中的每个元素分别获取出来,就是遍历。遍历也是数组操作中的基石。

    public class ArrayTest01 {
         
    	public static void main(String[] args) {
         
    		int[] arr = {
          1, 2, 3, 4, 5 };
    		System.out.println(arr[0]);
    		System.out.println(arr[1]);
    		System.out.println(arr[2]);
    		System.out.println(arr[3]);
    		System.out.println(arr[4]);
    	}
    }
    

    以上代码是可以将数组中每个元素全部遍历出来,但是如果数组元素非常多,
    这种写法肯定不行,因此我们需要改造成循环的写法。
    数组的索引是 0 到 lenght-1 ,可以作为循环的条件出现。

    public class ArrayTest01 {
         
        public static void main(String[] args) {
         
            //定义数组
            int[] arr = {
         11, 22, 33, 44, 55};
    
            //1 使用通用的遍历格式
            for(int x = 0; x < arr.length; x++) {
         
                System.out.println(arr[x]);
            }
            //2 增强 for
            forint a:arr){
         
             System.out.println(a);
            }
            }
        }
    }
    

    集合

在这里插入图片描述

List–集合的4种遍历

public class Demo {
   
   public static void main(String[] args) {
   
       ArrayList<String> array = new ArrayList<String>();

           array.add("a");
           array.add("b");
           array.add("c");
           array.add("d");
       System.out.println(array);
       // 迭代器:集合特有的遍历方式
       Iterator<String> it = array.iterator();
       while (it.hasNext()){
   
           String s1 = it.next();
           System.out.println(s1);
       }

       //2 列表迭代器:集合特有的遍历方式
       ListIterator<String> lit = array.listIterator();
       while(lit.hasNext()){
   
           String s2 = lit.next();
           System.out.println(s2);
       }
       //3 增强for:最方便的遍历方式
       for (String s3 : array) {
   
           System.out.println(s3);
       }
       //4 普通for:带有索引的遍历方式
       for (int i = 0; i < array.size(); i++) {
   
           String s4 = array.get(i);
           System.out.println(s4);
       }

   }
}

List集合

  • List集合概述
    • 有序集合(也称为序列),用户可以精确控制列表中每个元素的插入位置。用户可以通过整数索引访问元素,并搜索列表中的元素
    • 与Set集合不同,列表通常允许重复的元素
  • List集合特点
    • 有索引
    • 可以存储重复元素
    • 元素存取有序

并发修改异常【重点】

  • 出现的原因

    ​ 迭代器遍历的过程中,通过集合对象修改了集合中的元素,造成了迭代器获取元素中判断预期修改值和实际修改值不一致,则会出现:ConcurrentModificationException

    • 解决的方案

    ​ 用for循环遍历,然后用集合对象做对应的操作即可

实现类:ArrayList ,LinkedList。。。。

  • ArrayList
1.1构造方法
方法名 说明
public ArrayList() 创建一个空的集合对象
1.2成员方法
方法名 说明
public boolean remove(Object o) 删除指定的元素,返回删除是否成功
public E remove(int index) 删除指定索引处的元素,返回被删除的元素
public E set(int index,E element) 修改指定索引处的元素,返回被修改的元素
public E get(int index) 返回指定索引处的元素
public int size() 返回集合中的元素的个数
public boolean add(E e) 将指定的元素追加到此集合的末尾
public void add(int index,E element) 在此集合中的指定位置插入指定的元素
  • LinkedList集合
    方法名 说明
    public void addFirst(E e) 在该列表开头插入指定的元素
    public void addLast(E e) 将指定的元素追加到此列表的末尾
    public E getFirst() 返回此列表中的第一个元素
    public E getLast() 返回此列表中的最后一个元素
    public E removeFirst() 从此列表中删除并返回第一个元素
    public E removeLast() 从此列表中删除并返回最后一个元素

--------Set集合------------------------

Set集合

  • Set集合的特点
    • 元素存取无序
    • 没有索引、只能通过迭代器或增强for循环遍历
    • 不能存储重复元素

1.2哈希值【理解】

Object类中的public int hashCode():返回对象的哈希码值

实现类: HashSet,LinkedHashSet,TreeSet。。。

------------------HashSet集合的特点-----------------

  • 底层数据结构是哈希表
  • 对集合的迭代顺序不作任何保证,也就是说不保证存储和取出的元素顺序一致
  • 没有带索引的方法,所以不能使用普通for循环遍历
  • 由于是Set集合,所以是不包含重复元素的集合
    思考:1.HashSet集合怎么保证元素的一致性。2.哈希表了解下。

---------------- LinkedHashSet集合特点--------------

  • 哈希表和链表实现的Set接口,具有可预测的迭代次序
  • 由链表保证元素有序,也就是说元素的存储和取出顺序是一致的
  • 由哈希表保证元素唯一,也就是说没有重复的元素
  • ------------------ TreeSet集合概述----------------
  • 元素有序,可以按照一定的规则进行排序,具体排序方式取决于构造方法
    • TreeSet():根据其元素的自然排序进行排序
    • TreeSet(Comparator comparator) :根据指定的比较器进行排序
  • 没有带索引的方法,所以不能使用普通for循环遍历
  • 由于是Set集合,所以不包含重复元素的集合
    自然排序,Comparable的使用(了解)

Map集合

  • Map集合概述

    interface Map<K,V>  K:键的类型;V:值的类型
    
  • Map集合的特点

    • 键值对映射关系
    • 一个键对应一个值
    • 键不能重复,值可以重复
    • 元素存取无序
    • 方法介绍
    方法名 说明
    V put(K key,V value) 添加元素
    V remove(Object key) 根据键删除键值对元素
    void clear() 移除所有的键值对元素
    boolean containsKey(Object key) 判断集合是否包含指定的键
    boolean containsValue(Object value) 判断集合是否包含指定的值
    boolean isEmpty() 判断集合是否为空
    int size() 集合的长度,也就是集合中键值对的个数

    方法介绍

    方法名 说明
    V get(Object key) 根据键获取值
    Set keySet() 获取所有键的集合
    Collection values() 获取所有值的集合
    Set<Map.Entry<K,V>> entrySet() 获取所有键的集合
    • 示例代码
    public class MapDemo03 {
         
        public static void main(String[] args) {
         
            //创建集合对象
            Map<String, String> map = new HashMap<String, String>();
    
            //添加元素
            map.put("张无忌", "赵敏");
            map.put("郭靖", "黄蓉");
            map.put("杨过", "小龙女");
    
            //V get(Object key):根据键获取值
            System.out.println(map.
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值