Java中常用数据结构及方法

文章目录

  • 前言
  • 一、数据结构
    • 线性结构
    • 非线性结构
  • 二、Java中常用数据结构及方法
    • 1、数组Array
    • 2、数据结构
      • (1)栈Stack
      • (2)向量Vector
    • 3、集合框架
      • (1)Collection常用方法
      • (2)List常用方法
      • (3)Set常用方法
      • (4)Map常用方法
      • (5)Queue与Deque
      • (6)String与StringBuffer
  • 总结


前言

参考链接


一、数据结构

数据结构是计算机中存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。数据结构往往同高效的检索算法和索引技术有关。
Java中常用数据结构及方法_第1张图片
数据结构有很多中,按照数据的逻辑结构进行简单分类,包括线性结构和非线性结构。

线性结构

线性结构就是表中各个结点具有线性关系,线性结构的特点包括:

  • 线性结构是非空集。
  • 线性结构有且仅有一个开始结点和一个终端结点。
  • 线性结构所有结点都最多只有一个直接前驱结点和一个直接后继结点。

常见的线性结构有:

一维数组、链表、栈、队列等。

非线性结构

非线性结构就是表中各个结点之间具有多个对应关系,非线性结构特点包括:

  • 非线性结构是非空集。
  • 非线性结构的一个结点可能有多个直接前驱结点和多个直接后继结点。

常见的非线性结构有:

多维数组、广义表、树和图等。

二、Java中常用数据结构及方法

1、数组Array

Java中定义各种类型个的数组:

    public static void main(String[] args){
        int[] num=new int[5];     //已知元素个数
        int[] num1=new int[]{1,2,3,4,5};  //初始化
        char[] num2=new char[5];
        float[] num3=new float[5];
        double[] num4=new double[5];
        byte[] num5=new byte[5];
        String[] num6=new String[5];
        long[] num7=new long[5];
    }

Java中数组常用方法,这些方法都是由java.util.Arrays提供的方法提供的:

        Arrays.fill(num,2,4,10);            //将数组填充某个元素
        boolean flag=num.equals(num1);      //判断数组是否相等
        Arrays.sort(num1,2,4);              //将数组排序
        Arrays.binarySearch(num,3);         //可以对排序好的数组进行二分查找
        System.arraycopy(num,2,num1,2,3);  //复制数组

2、数据结构

(1)栈Stack

    public static void main(String[] args){
        Stack stack=new Stack<>();
        Stack<Integer> stack3=new Stack<>();    //添加某种类型的元素到栈中
        ArrayList arrayList=new ArrayList<>();
        LinkedList linkedList=new LinkedList<>();
        //加入元素
        stack.push(2);
        stack.push(4);
        stack.push(3);
        stack.push(5);
        //获取栈顶
        stack.peek();
        //删除元素——可以删除元素object也可以删除指定位置
        stack.remove(2);
        //移除元素
        stack.pop();
        //判断是否为空
        boolean flag=stack.isEmpty();
        //查找元素
        stack.search(3);
        //指定某个位置元素
        stack.set(1,10);
        //获取某位置元素
        stack.get(3);
    }

栈是Vector的一个子类,它实现了一个标准的先进后出的栈;

  • 添加元素
    stack.push(2);
  • 获取栈顶
    stack.peek();
  • 删除元素——可以删除元素object也可以删除指定位置
    stack.remove(2);
  • 移除元素
    stack.pop();
  • 判断是否为空
    boolean flag=stack.isEmpty();
  • 查找元素
    stack.search(3);
  • 指定某个位置元素
    stack.set(1,10);
  • 获取某位置元素
    stack.get(3);

(2)向量Vector

    public static void main(String[] args){
       Vector vector=new Vector<>();
       Vector<String> vector3=new Vector<>();
        //加入元素
        vector.add(1,10);
        //删除元素
        vector.remove(2);   //删除对象元素或指定位置元素
        //改
        vector.set(1,2);   //在指定位置设置元素
        //查
        int num= (int) vector.get(1); //获取指定位置元素
        int num1=vector.indexOf(2);   //获取元素的位置
        int num2=vector.lastIndexOf(2); //获取最后一个某元素的位置
        //其他
        vector.clear();                            //清空所有元素
        Vector vector1= (Vector) vector.clone();   //复制向量的一个副本
        Object[] nums=vector.toArray();            //向量转为数组
        int size=vector.size();                    //返回元素个数
        int capacity=vector.capacity();            //返回容量
        boolean flag=vector.contains(2);           //判断是否包含某元素
        boolean flag2=vector.isEmpty();            //判断是否为空
        Iterator iterator= vector.iterator();      //获取向量的迭代器
    }
  • 加入元素
    vector.add(1,10);
  • 删除元素
    vector.remove(2); //删除对象元素或指定位置元素

  • vector.set(1,2); //在指定位置设置元素

  • int num= (int) vector.get(1); //获取指定位置元素
    int num1=vector.indexOf(2); //获取元素的位置
    int num2=vector.lastIndexOf(2); //获取最后一个某元素的位置
  • 其他
    vector.clear(); //清空所有元素
    Vector vector1= (Vector) vector.clone(); //复制向量的一个副本
    Object[] nums=vector.toArray(); //向量转为数组
    int size=vector.size(); //返回元素个数
    int capacity=vector.capacity(); //返回容量
    boolean flag=vector.contains(2); //判断是否包含某元素
    boolean flag2=vector.isEmpty(); //判断是否为空
    Iterator iterator=vector.iterator(); //获取向量的迭代器

3、集合框架

java集合框架主要有两种类型的容器:Collection和Map;Collection接口又有3中子类型:List、Set和Queue,每种都有它对应的具体实现类,常用的有ArrayList,LinkedList,HashSet,HashMap,和HashTable等。

(1)Collection常用方法

    public static void main(String[] args){
        ArrayList arrayList=new ArrayList<>();
        ArrayList arrayList1=new ArrayList<>();
        arrayList.add(5);
        arrayList.add("agdhgahs");
        arrayList.add(1);
        arrayList.add(10);
        arrayList.add("abc");
        Collections.sort(arrayList);//排序
        Collections.reverse(arrayList);//反转
        Collections.shuffle(arrayList);//打乱
        Collections.fill(arrayList,-1);//赋值
        Collections.copy(arrayList,arrayList1);//将arraylst1 copy到 arraylist中去
        Collections.indexOfSubList(arrayList,arrayList1);  //获取arrayList1中arrayList的位置
        Collections.lastIndexOfSubList(arrayList,arrayList1);//获取arrayList1中arrayList最后出现的位置
        Collections.swap(arrayList,2,4);//交换指定索引元素的位置
        Collections.binarySearch(arrayList,2);//返回指定元素的索引
        Collections.replaceAll(arrayList,1,"name");//替换list中指定位置的元素
    }
  • 排序
    Collections.sort(arrayList);//排序
  • 反转
    Collections.reverse(arrayList);//反转 + 打乱
    Collections.shuffle(arrayList);//打乱
  • 赋值
    Collections.fill(arrayList,-1);//赋值
  • 拷贝
    Collections.copy(arrayList,arrayList1);//将arraylst1 copy到 arraylist中去
  • 获取
    Collections.indexOfSubList(arrayList,arrayList1); //获取arrayList1中arrayList的位置
    Collections.lastIndexOfSubList(arrayList,arrayList1);//获取arrayList1中arrayList最后出现的位置
    Collections.binarySearch(arrayList,2);//返回指定元素的索引
  • 交换
    Collections.swap(arrayList,2,4);//交换指定索引元素的位置
    Collections.replaceAll(arrayList,1,“name”);//替换list中指定位置的元素

(2)List常用方法

    public static void main(String[] args){
        ArrayList<Integer> arrayList=new ArrayList<>();        //常用的就是arraylist和linkedlist
        LinkedList<String> linkedList=new LinkedList<>();
        for(int i=0;i<5;++i){
            arrayList.add(i+1);
        }
        for(int i=0;i<4;++i){
            linkedList.add("dcb"+String.valueOf(i+1));
        }
        //增
        arrayList.add(1,20);   //在指定位置添加元素
        linkedList.add(2,"shasha");
        //删
        arrayList.remove(2);   //删除指定位置元素对象
        linkedList.remove(3);
        //改
        arrayList.set(3,10); //在指定索引位置设置元素
        linkedList.set(2,"zhangzhang");
        //查
        int num=arrayList.get(1);//获取指定位置的元素
        int index=arrayList.indexOf(5);//返回指定元素第一次出现的索引
        int lastindex=arrayList.lastIndexOf(2);//返回指定元素最后一次出现的索引
        //其他
        arrayList.clear();//移除所有的元素
        Object[] nums=arrayList.toArray();//向量转为数组
        int size=arrayList.size();//返回元素个数
        boolean flag=arrayList.contains(3);//判断是否包含某元素
        Iterator iterator=arrayList.iterator();//返回迭代器
        boolean empty=arrayList.isEmpty();//判断是否为空
    }

Java中常用的list结构有arraylist和linkedlist,它常用的方法有:


  • arrayList.add(1,20); //在指定位置添加元素
    linkedList.add(2,“shasha”);

  • arrayList.remove(2); //删除指定位置元素对象
    linkedList.remove(3);

  • arrayList.set(3,10); //在指定索引位置设置元素
    linkedList.set(2,“zhangzhang”); + 查
    int num=arrayList.get(1);//获取指定位置的元素
    int index=arrayList.indexOf(5);//返回指定元素第一次出现的索引
    int lastindex=arrayList.lastIndexOf(2);//返回指定元素最后一次出现的索引
  • 其他
    arrayList.clear();//移除所有的元素
    Object[] nums=arrayList.toArray();//向量转为数组
    int size=arrayList.size();//返回元素个数
    boolean flag=arrayList.contains(3);//判断是否包含某元素
    Iterator iterator=arrayList.iterator();//返回迭代器
    boolean empty=arrayList.isEmpty();//判断是否为空

(3)Set常用方法

    public static void main(String[] args){
        HashSet hashSet=new HashSet<>();
        for(int i=1;i<=5;++i)
            hashSet.add(10-i+3);
        //增
        hashSet.add(5);//在指定位置添加元素
        //删
        hashSet.remove(3);//删除元素对象
        //其他
        hashSet.clear();//移除所有的元素
        Object[] nums=hashSet.toArray();//向量转为数组
        int size=hashSet.size();//返回元素个数
        boolean flag=hashSet.contains(3);//判断是否包含某元素
        Iterator iterator=hashSet.iterator();//返回迭代器
        boolean empty=hashSet.isEmpty();//判断是否为空
    }

  • hashSet.add(5);//在指定位置添加元素

  • hashSet.remove(3);//删除元素对象
  • 其他
    hashSet.clear();//移除所有的元素
    Object[] nums=hashSet.toArray();//向量转为数组
    int size=hashSet.size();//返回元素个数
    boolean flag=hashSet.contains(3);//判断是否包含某元素
    Iterator iterator=hashSet.iterator();//返回迭代器
    boolean empty=hashSet.isEmpty();//判断是否为空

(4)Map常用方法

    public static void main(String[] args){
        HashMap hashMap=new HashMap<>();
        for(int i=1;i<=5;++i){
            hashMap.put(i,"fgd"+String.valueOf(10-i+1));
        }
        //增
        hashMap.put(1,"abc");//添加元素
        //删
        hashMap.remove(2);//删除元素
        //改
        hashMap.replace(1,"fgd10");
        //查
        String value= (String) hashMap.get(5);//获取元素的值
        boolean flag=hashMap.containsKey(3);//判断是否有指定的key
        boolean flag2=hashMap.containsValue("abc");//判断是否有指定的value
        //其他
        Iterator entrySet= (Iterator) hashMap.entrySet();   //返回哈希表的枚举
        Iterator keySet=hashMap.keySet().iterator();//返回哈希表中的键的枚举
        Iterator values=hashMap.values().iterator(); //返回哈希表中的值的枚举
        hashMap.clear();//将哈希表清空
        boolean empty=hashMap.isEmpty();//判断表是否为空
        int size=hashMap.size();//返回哈希表的大小
    }

  • hashMap.put(1,“abc”);//添加元素

  • hashMap.remove(2);//删除元素

  • hashMap.replace(1,“fgd10”);

  • String value= (String) hashMap.get(5);//获取元素的值
    boolean flag=hashMap.containsKey(3);//判断是否有指定的key
    boolean flag2=hashMap.containsValue(“abc”);//判断是否有指定的value
  • 其他
    Iterator entrySet= (Iterator) hashMap.entrySet(); //返回哈希表的枚举
    Iterator keySet=hashMap.keySet().iterator();//返回哈希表中的键的枚举
    Iterator values=hashMap.values().iterator(); //返回哈希表中的值的枚举
    hashMap.clear();//将哈希表清空
    boolean empty=hashMap.isEmpty();//判断表是否为空
    int size=hashMap.size();//返回哈希表的大小

(5)Queue与Deque

关于Queue与Deque之前总结过啦,参考这里。

(6)String与StringBuffer

关于String与StringBuffer或StringBuilder等的总结,参考这里。


总结

这里主要总结了Java总常用的数据结构及方法,仅供参考啦!~

你可能感兴趣的:(Java,java,数据结构,算法)