码迷,mamicode.com
首页 > 编程语言 > 详细

Java数据结构

时间:2020-02-21 18:36:24      阅读:70      评论:0      收藏:0      [点我收藏+]

标签:width   new   class   stat   ase   linked   常见   需要   auto   

一、线性数据结构

1、Java一维数组的创建

  (1)预先定义数组的内存空间

 int[] arr = new int[3];
   // new int[3]是代表创建3个内存地址空间
   // 地址空间的序号是按照0开始的,也就是说0为1号位置 arr[
1] =2; //每二个内存地址空间都赋一个值 第二个位置赋值 2 arr[2] =4; //第二个内存地址空间赋值为 4 arr[0] =3; //第一个内存地址空间赋值为 3

//for循环遍历arr每一个数组元素并且打印
for (int i=0;i<arr.length;i++) { System.out.println(arr[i]); }

  (2)   ArrayList的创建和使用

import java.util.ArrayList;
import java.util.LinkedList;
public class Case {
public static void main(String[] args){

ArrayList data = new ArrayList();
//add是增加某个元素
data.add(1);
data.add(3);
data.add(2);
data.add(4);
for (int i=0;i< data.size();i++) {
//get是通过索引获取元素
System.out.println(data.get(i));
}
System.out.println("------------------------");
//移除某个索引上的元素
data.remove(2);
for (int i=0;i< data.size();i++) {
System.out.println(data.get(i));
}
System.out.println("------------------------");
/**
* data有1,2,4三个元素
*/
   //判断ArrayList是否为空
System.out.println(data.isEmpty());
//获取某个元素的索引
System.out.println(data.indexOf(4));
}

  ArrayList的内存地址是相邻的,假设动态数组A有3个元素a1,a2,a3.如果a1地址为1,则a2,a3为2,3.所以他的遍历速度很快,获得元素很快,弊端就是插入和删除节点时速度较慢,就比如在1号索引插入数据a4则a4的内存地址为2,那么原先1号地址的a2以及后面的元素将全部后移。  

   (3) LinkedList的创建和使用(基于链表的数据结构)

public static void main(String[] args) {
        //创建链表(import java.util.LinkedList)
        LinkedList<Object> data = new LinkedList<>();
        //add(index,element)增加
        data.add(0,2);
        data.add(3);
        data.add(4);
        data.add(5);
        for(int i=0;i<data.size();i++) {
            System.out.println(data.get(i));
        }
       //判断是否包含元素3
        System.out.println(data.contains(3));
    }

  链表数据结构,的内存地址是不连续的具体如下图所示:

技术图片

 

     得益于其内存地址无规律,其链表结构图也从侧面反应了,在某个地方增加节点(删除)其后续节点不需要移动,所以其增删性能优于动态数组。



 

二、非线性结构

  其结构如下图所示:

  技术图片

 

     A,B,C称为节点,连接节点之间的线称为边。CDF成为叶节点(因为它们没有字节点),而A为根节点。

  常见的树型:二叉树(树的每个节点最多只能有两个子节点)

    (1)二叉搜索树要求:若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;    它的左、右子树也分别为二叉排序树。

     技术图片

 

     

    

 

 

  


  

 

 

 

  

 

 

 


 

Java数据结构

标签:width   new   class   stat   ase   linked   常见   需要   auto   

原文地址:https://www.cnblogs.com/fanshaoxiang/p/11988911.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!