热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Java中的自定义数组列表

Java 中的自定义数组列表原文:https://www.geeksforgeeks.org/custom-arraylist-

Java 中的自定义数组列表

原文:https://www.geeksforgeeks.org/custom-arraylist-java/

在继续之前,让我们快速修改一下数组数组列表的概念。所以在 java 中,我们已经看到数组是线性数据结构,提供了在内存地址空间中以连续方式添加元素的功能,而 ArrayList 是属于 Collection 框架的一个类。作为一名优秀的程序员,尽管知道数组和数组之间的区别,但已经知道在数组上使用数组列表。现在,即使使用数组列表,也有一个传递应该存储在数组列表中的元素的数据类型的功能,无论它是对象、字符串、整数、双精度、浮点等。

语法:

Arraylist<DataType> al = new ArrayList<Datatype> ;

注:Java 中的 ArrayList(相当于 C++中的 vector)具有动态大小。它可以根据大小缩小或扩大。ArrayList 是集合框架的一部分,存在于 java.util 包中。

语法:

ArrayList <E> list = new ArrayList <> ();

这里重要的是,这里的 E 代表一个对象数据类型,想象一下这里是整数。整数类将基本类型的值包装在对象中。整数类型的对象包含一个类型为整数的字段。在继续之前,请仔细阅读 java 中包装类的概念,因为它将在后端提供服务,如果我们非常了解自动装箱和取消装箱的概念,理解会更加清晰。这是因为在对列表中的元素执行操作时,它们的语法会有所不同,因此理解概念也会耗尽,假设考虑向自定义数组列表中添加元素的场景,并注意两者之间的语法差异。

语法:

ArrayList<Integer> al = new Arraylist<Integer>() ;
al.add(1) ;

语法:

ArrayList alobj = new Arraylist() ;
alobj(new Integer(1)) ;

让我们举一个例子来理解如下:

插图:

在这里,我们拥有通常使用的相同类型的所有元素。现在,让我们提出相同的图形流数组列表,它简单地支持多个数据,如图所示。

在上面的 ArrayList 中,我们可以清楚地看到存储在中的元素是不同类型的。所以确实爆发出制约的概念。不仅是这个列表,我们还可以根据我们的类型灵活地制作列表,我们可以访问数组列表中的数据类型。这个列表在 java 中被称为自定义数组列表自定义数组列表具有基于用户需求的属性,并且可以有多种类型的数据。该数据由自定义内部类提供,该类由各种原始对象数据类型组合而成。

实现:考虑一个需要输入为 N 的学生人数的情况,具体为:


  • 辊号

  • 名称

  • 标记

  • 电话号码

假设我们不知道 java 中自定义数组列表的概念,那么我们将生成下面列出的单个数组列表。因为我们定义了 4 个数组列表,并相应地在每个列表中保存数据。

ArrayList<Integer> roll = new ArrayList<>(); // roll number


ArrayList<String> name = new ArrayList<>(); // name


ArrayList<Integer> marks = new ArrayList<>(); // marks


ArrayList<Long> phone = new ArrayList<>(); // phone number

现在,我们将对它们中的每一个进行迭代,以获取学生数据,这在更大程度上增加了我们程序的时间复杂性,如下所示。

for (int i = 0; i < n; i++)
{
// Adding all the values to each arraylist
// each arraylist has primitive datatypes
roll.add(rollnum_i);
name.add(name_i);
marks.add(marks_i);
phone.add(phone_i);
}

现在,让我们借助于上面学习的概念,通过实现相同的东西来做同样的事情。因此,为了构建我们的自定义数组列表,请执行下列步骤:

程序:构建自定义数组列表如下:


  1. 构建一个数组列表对象,并将其类型作为类数据。

  2. 定义一个类,并将所需的实体放入构造函数中。

  3. 将这些实体链接到全局变量。

  4. 从数组列表接收的数据属于存储多个数据的类类型。

Java 语言(一种计算机语言,尤用于创建网站)


// Java program to illustrate Custom ArrayList
// Importing ArrayList class from java.util package
import java.util.ArrayList;
// Class 1
// Outer class
// Main class
// CustomArrayList
class GFG {
    // Custom class which has data type class has
    // defined the type of data ArrayList
    // size of input 4
    int n = 4;
    // Class 2
    // Inner class
    // The custom datatype class
    class Data {
        // Global variables of the class
        int roll;
        String name;
        int marks;
        long phone;
        // Constructor has type of data that is required
        Data(int roll, String name, int marks, long phone)
        {
            // Initialize the input variable from main
            // function to the global variable of the class
            // this keyword refers to current instance
            this.roll = roll;
            this.name = name;
            this.marks = marks;
            this.phone = phone;
        }
    }
    // Method 1
    // Main driver method
    public static void main(String args[])
    {
        // Custom input data
        int roll[] = { 1, 2, 3, 4 };
        String name[]
            = { "Shubham", "Atul", "Ayush", "Rupesh" };
        int marks[] = { 100, 99, 93, 94 };
        long phone[] = { 8762357381L, 8762357382L,
                         8762357383L, 8762357384L };
        // Creating an object of the class
        GFG custom = new GFG();
        // Now calling function to add the values to the
        // arraylist
        custom.addValues(roll, name, marks, phone);
    }
    public void addValues(int roll[], String name[],
                          int marks[], long phone[])
    {
        // local custom arraylist of data type
        // Data having (int, String, int, long) type
        // from the class
        ArrayList<Data> list = new ArrayList<>();
        for (int i = 0; i < n; i++) {
            // create an object and send values to the
            // constructor to be saved in the Data class
            list.add(new Data(roll[i], name[i], marks[i],
                              phone[i]));
        }
        // after adding values printing the values to test
        // the custom arraylist
        printValues(list);
    }
    // Method 2
    // To print the values
    public void printValues(ArrayList<Data> list)
    {
        // list- the custom arraylist is sent from
        // previous function
        for (int i = 0; i < n; i++) {
            // Data received from arraylist is of Data type
            // which is custom (int, String, int, long)
            // based on class Data
            Data data = list.get(i);
            // Print and display custom ArrayList elements
            // that holds for student attribute
            // Data variable of type Data has four primitive
            // datatypes roll -int name- String marks- int
            // phone- long
            System.out.println(data.roll + " " + data.name
                               + " " + data.marks + " "
                               + data.phone);
        }
    }
}

Output

1 Shubham 100 8762357381
2 Atul 99 8762357382
3 Ayush 93 8762357383
4 Rupesh 94 8762357384

本文由 Shubham Saxena 供稿。如果你喜欢 GeeksforGeeks 并想投稿,你也可以使用write.geeksforgeeks.org写一篇文章或者把你的文章邮寄到 review-team@geeksforgeeks.org。看到你的文章出现在极客博客主页上,帮助其他极客。如果你发现任何不正确的地方,或者你想分享更多关于上面讨论的话题的信息,请写评论。


推荐阅读
  • vue使用
    关键词: ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • javascript  – 概述在Firefox上无法正常工作
    我试图提出一些自定义大纲,以达到一些Web可访问性建议.但我不能用Firefox制作.这就是它在Chrome上的外观:而那个图标实际上是一个锚点.在Firefox上,它只概述了整个 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 判断数组是否全为0_连续子数组的最大和的解题思路及代码方法一_动态规划
    本文介绍了判断数组是否全为0以及求解连续子数组的最大和的解题思路及代码方法一,即动态规划。通过动态规划的方法,可以找出连续子数组的最大和,具体思路是尽量选择正数的部分,遇到负数则不选择进去,遇到正数则保留并继续考察。本文给出了状态定义和状态转移方程,并提供了具体的代码实现。 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
author-avatar
手机用户2502928203
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有