关于java的构造函数的一个问题 5C

假如我输入n个电影,如何在一个类下面创建n个电影对象,并在arrylist中根据对象的某个函数进行排序

0

3个回答

朋友你想创建n个电影对象,他们需要用外部自定义函数去排序,类的成员函数是对当前这个对象的一些操作,而你的类是电影,不是电影列表。
如果你想用成员函数解决这个问题,你可以创建一个电影列表的类,n个电影是一个此类对象的数据,然后编写相应的排序成员函数进行排序。
此外你说到了构造函数,若你采用电影列表的类,你可以有添排序所依靠的条件作为参数构造函数的其中一个参数。

0

你的问题很不清晰:“我输入n个电影 ” 请问你怎么输入n个电影?程序中没有“电影”这种东西,有的话只能是一个“电影对象”;那么既然你已经输入了n个电影对象了,又谈何创建n个电影对象,你这不已经输入进来了嘛?
当然,作为初学者,我猜测你是不是说你输入了n个电影的名字的字符串?要输入n个字符串,那么你说的“一个类”的构造函数就要接收一个字符串数组作为参数;而你的“电影类”就要提供一个接收电影名字符串作为参数的构造函数。遍历n个电影名的字符串数组,对每个名字new一个电影类,add到arraylist里。
要排序的话,电影类实现Comparable接口,在compare方法里编写比较逻辑,对Arraylist用Collections.sort()就可以了

0

首先,你的问题描述和标题不是很准确
然后,我根据你写的信息进行大胆假设,做出以下描述:
1.根据需求你可能需要2个类分别为 film(电影) 和 filmTools(辅助类)
2.简单代码如下:
/**

  • @description 电影对象
    */
    public class Film
    {
    public Film(int orderIndex)
    {
    this.orderIndex = orderIndex;
    }
    private int orderIndex;

    /**

    • 自定义排序函数
    • @return 优先级值 */ public int order() { return orderIndex; } } ```
 @description 电影处理的相关工具类  一般该类的函数为静态函数,
     但是假设玩家需要的构造函数的问题,所以这里改为通过构造函数处理
 */
public class FilmTools
{
    public FilmTools(int filmNum)
    {
        initFilm(filmNum);
        sortFilms();
    }
    /**存放电影列表**/
    private List<Film> list = new ArrayList<>();

    /**
     * 根据传入的参数 初始化电影列表
     * @param filmNum
     */
    private void initFilm(int filmNum)
    {
        list.clear();
        Random random = new Random();
        for(int i = 0 ; i <filmNum; i++)
        {
            //这里举例说明
           Film film = new Film(random.nextInt(filmNum) );
           list.add(film);
        }
    }

    /**
     * 对电影列表进行排序
     */
    public void sortFilms()
    {
        if(list == null)
        {
            return ;
        }
        //进行排序
        Collections.sort(list, new Comparator<Film>() {
            @Override
            public int compare(Film o1, Film o2) {
                return o1.order() - o2.order();
            }
        });
    }
}

当然题主的问题  我猜测可能是想知道 工厂模式 ,题主可以去了解一下  关于构造函数的行为设计模式

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
构造函数总结(选择题)
下列说法哪个正确? 所有类都必须定义一个构造函数 构造函数必须有返回值 构造函数可以访问类的非静态成员 构造函数必须初始化类的所有数据成员
Java面试题 类的构造函数的执行顺序问题
面试的时候会经常提到构造函数的执行顺序问题 先来看看这一段构造函数的执行顺序。 package csdn; public class ParentClass { static int num = 0; String name = &quot;qqqqqq&quot;; static String name2 = &quot;wwwwwwwwwww&quot;; static ParentClass parentClass ...
习题(练习类、构造函数和static关键字)
static关键字1,编写一个类,包含一个排序的静态方法Sort(),当传入的是一个整形数组,按照从小到大的顺序输出,如果传入的是一个字符串,就将字符串反序输出。PS:考虑下函数重载package homework; import java.util.Arrays; /** 编写一个类,包含一个排序的静态方法Sort(),当传入的是一个整形数组, 按照从小到大的顺序输出,如果传入的是一个
常见笔/面试题-之构造函数和析构函数
常见笔/面试题-之构造函数和析构函数构造函数是用来初始化一个对象的,而析构函数的作用则是释放对象占用的空间。如果将虚函数、构造函数和析构函数结合起来会有怎么样的效果呢? 构造函数可以是虚函数吗?答:构造函数不可以是虚函数!基于以下几点原因:(1)构造一个对象的时候,必须知道对象的实际类型,而虚函数行为是在运行期间动态确定实际类型的。在构建一个对象时,构造函数执行期间,对象未完全构建完成,编译器无法知
java中抽象类中构造函数使用
构造函数是对象的基本,没有构造函数就没有对象。 如果在父类中(这里就是你的抽象类)中显示的写了有参数的构造函数,在子类继承是就必须写一个构造函数来调用父类的构造函数 例子: abstract class Person { //定义一个抽象类,必须被继承 Person(int i) { } } public class Student extends P
面试题-面向对象-构造函数和析构函数
返回目录:https://blog.csdn.net/chen1083376511/article/details/82723709问题1:问:构造函数与析构函数是什么?区别是什么? 答: 构造函数:每个类都分别定义了它的对象被初始化的方式,类通过一个或几个特殊的成员函数来控制其对象的初始化过程,这些函数叫做构造函数。构造函数的任务是初始化对象的数据成员,构造函数最重要的作用是创建对象本身。 ...
关于派生类的构造函数的一些问题
首先需要明确的是,无论是基类还是派生类,想要携带特定参量实例化对象,都需要存在一个相对应的构造函数。尤其是对于一个派生类来说,即是说基类里面已经有了携带了所需参量的构造函数,但他只是基类的构造函数,派生类并不可以直接拿过来用。 另外,对于派生类中base和this的使用,也算是痛的领悟,琢磨试验了好一会儿才搞明白了。不论是使用base还是this,他们的目的都在于保持或者扩展他们所引用的构造函数...
java继承后构造函数的继承机制
最近在了解一些java基础的东西。发现继承后构造函数的继承很有意思,怕忘了所以记录一下: 测试1-如果父类不主动创建构造函数则子类创建构造函数没有限制 测试2-如果父类创建不含参构造函数则子类创建构造函数没有限制且先执行父类的构造函数。 测试3-如果父类创建含参构造函数则子类创建构造函数需要先super父类函数且先执行父类的构造函数。 测试4-如果父类创建多个含参构造函数则子类创建构造函数需要先su
一道Java笔试题:静态语句块、构造语句块和构造函数的执行顺序
  public class HelloA { //构造方法 public HelloA(){ System.out.println(&quot;Hello A!父类构造方法&quot;); } //非静态代码块 { System.out.println(&quot;i'm A class.父类非静态代码块&quot;); } //静态代码块 static{ System.out.println(&quot;sta...
javaSE File,File类的三种构造函数
Demo.java:package cn.xxx.demo; import java.io.File; /* * File类的构造方法 * 三种重载形式 */ public class Demo { public static void main(String[] args) { function_2(); } /* * File(File parent,String...
关于构造函数的介绍(一)
以前在我们进行定义一个变量的时候,会手动进行输出初始化。在基于对象的程序中,定义一个对象时候,需要做初始化的工作,也就是对数据成员赋初值,那么该如何做呢? class Time { public: hour = 0; minute = 0; second =0 ; } 我们通常会这样想,但这是一种错误的写法,因为这定义的是一个类,并不是一个...
使用带参数构造函数继承时注意
基础: 1. 纯虚类无法实例化!(含有纯虚函数的类称为纯虚类) 2. 虚函数不可只声明不定义!(普通类方法可以只声明) 先举一个例子,方便描述: #include using namespace std; class CTest { public: CTest() { cout << "default constructor." << endl; }; ~CTest() {
【死磕Java并发】-----分析 ArrayBlockingQueue 构造函数加锁问题
原文出处http://cmsblogs.com/ 『chenssy』 昨天有位小伙伴问我一个 ArrayBlockingQueue 中的一个构造函数为何需要加锁,其实这个问题我还真没有注意过。主要是在看 ArrayBlockingQueue 源码时,觉得它很简单,不就是通过加锁的方式来操作一个数组 items 么,有什么难的,所以就没有关注这个问题,所以它一问我懵逼了。回家细想了下,所以产生这篇博客
Java中有关构造函数的一道笔试题解析
Java中有关构造函数的一道笔试题解析 1、具体题目如下 下列说法正确的有() A. class中的constructor不可省略 B. constructor必须与class同名,但方法不能与class同名 C. constructor在一个对象被new时执行 D.一个class只能定义一个constructor 2、解析说明 (1)class中的构造函数是可以省略的
子类构造函数参数列表,子类向父类传参数
#include "stdafx.h" #include #include #include using namespace std; class animal { public: animal(int height, int weight) { cout } }; class fish :public animal { public: fi
java 构造函数、非构造函数的this调用
为什么Android自定义View初始化方法不会多次调用
构造函数参数默认值的问题
类定义: 01 class A{ 02 private: 03     int m_data; 04 public: 05     A(int data=0){ 06         m_data=data; 07     } 08     int GetData(){ 09         return m_data; 10     } 11 }; Main函数: 01
Java中子类和父类的构造函数?
这篇文章总结了关于Java构造的常见​​问题。 1)为什么创建一个子类对象要也需要调用父类的构造函数? class Super { String s; public Super(){ System.out.println("Super"); } } public class Sub extends Super { public Sub(){
JAVA中super和this调用构造函数
this 和super只能在构造函数中有有一个,且都必须是构造函数当中的第一行。 super关键字,子类可以通过它调用父类的构造函数。 1、当父类的构造函数是无参构造函数时,在子类的构造函数中,就算不写super()去调用父类的构造函数,编译器不会报错,因为编译器会默认的去调用父类的无参构造函数。 class hood { public hood(){ System.out
关于默认构造函数的几个错误认识(四种情况下,编译器会生成默认构造函数)
书上提到没有定义构造函数时进行显式初始化成员,我很纳闷,不是说没有定义构造函数的时候会合成默认构造函数吗,自己查了下,果然查到了一下转载的内容:不是未定义构造函数就一定会合成默认构造函数的!        转自:http://www.cppblog.com/chenglong7997/articles/169731.html        假期间闲来无事,就下载了某大师的VC++视频资
从构造函数看线程安全
线程是编程中常用而且强大的手段,需要面对的就是线程安全问题。Java 中的构造函数是否是线程安全的呢?
java中静态初始化块,实例初始化块,构造函数区别
public class People { public static int num=0;//静态变量 String name; static//静态初始化块 { System.out.println(num+":静态初始化块"); } {//实例初始化块 System.out.println(num+":实例初始化块");
菱形继承->菱形虚拟继承(继承系列问题)
//待解决:如何在类外访问类的私有成员(友元函数和offsetof) //如何在一个类外访问另外一个类的私有成员 //用C语言模拟实现继承继承(继承权限public->protected->private)继承是面向对象复用的重要手段,通过继承定义一个类,继承是关系类型之间的建模, 共享共有的东西,实现各自本质不同的东西。在继承关系当中,派生类继承父类的成员由此达到复用手段。public继承是一
java 抽象类 和接口 构造函数
1、抽象类和接口有什么区别抽象类特征如下:抽象类和抽象方法都必须用abstract关键字修饰抽象类不能被实例化,也就是不能用new关键产生对象抽象方法只需声明而无需事先抽象方法必须定义的抽象类中,抽象类的子类必须实现父类中的抽象方法,否则这个子类还是个抽象类接口的特征接口内有构造方法接口中声明变量均为final,static,和public得接口中定义的方法均为抽象的和公共的接口里的数据成员必须初始化,且数据成员均为常量interface Truck{ void sound();}interface Bus
构造方法、继承、重构
七.构造方法 (构造器/构造函数/构造方法) 1. 定义: . 构造方法的名字和类的名字相同 . 没有返回类型,有返回类型的构造器就变成了普通方法。 2. 调用时刻: 在创建对象的时候调用; 注意:是先创建对象,然后初始化对象中的属性值,最后在调用构造器 3. 作用: 可以让我们在创建对象的时候做一些对象中数...
JAVA一个类有两个构造函数,当在一个构造函数中调用另外一个构造函数时为什么要用this.()而不能用类名.()
JAVA一个类有两个构造函数,当在一个构造函数中调用另外一个构造函数时为什么要用this.()而不能用类名.() 举报描述不清违规检举侵权投诉| 分享| 2009-03-12 10:51 彪悍排骨男 | 浏览 7058 次 编程语言 class Test{ int i; Test(){ i = 0; } Test(int i){ this.();
java中子类继承父类时,是否继承构造函数
java继承中对构造函数是不继承的,只是调用(隐式或显式)。以下是例子: 1、子类隐式的调用父的构造函数 public class FatherClass { // 无参的构造函数 public FatherClass() { System.out.println("我是父类无参数的构造方法:" + 100); } //有参的构造
js高级——传统构造函数存在的问题
//写一个构造函数 用来创建学生对象 //属性:姓名 年龄 身高 体重 //行为:学习 吃饭 看片 把妹 function Student(name){     this.name = name;     this.study = function(){         console.log("好好学习 天天向上");     } } //如果构造函数没有
Java, 构造函数介绍
构造函数介绍一,特点: 1.构造器必须与类同名(如果一个源文件中有多个类,那么构造器必须与公共类同名) 2.每个类可以有一个以上的构造器 3.构造器可以有0个、1个或1个以上的参数 4.构造器没有返回值 5.构造器总是伴随着new操作一起调用。 6, 使用super调用父类构造器的语句必须是子类构造器的第一条语句。二,构造器的作用 1,创建对象:任何类想要创建实例对象就必须具有构造函数
java 中 继承抽象类,在创建子类实例的时候,构造函数创建实例了吗?
大家都知道我们在继承的情况下,如果new 一个子类的对象,那么就会先去调用父类的构造函数,那么问题来了,我们继承的如果是一个抽象类的话,那他是怎么创建父类对象呢?因为抽象类是不能创建对象的啊!也就是说调用构造函数就是new 对象吗?准备两个类 实现继承关系public abstract class Father { private String name; private int ...
C++面试常见题目8_构造函数
构造函数的种类: 默认构造函数 无参数构造函数 一般构造函数(重载构造函数) 复制(拷贝)构造函数 class Student { private: int num; int age; string name; public: //当一个类没有定义任何构造函数时,系统会自动生成默认的无参构...
Java中枚举的梗
Java中的枚举定义和使用,相信大多数的java程序员都会,但是对于enum的使用其实很多人还是一知半解,包括本人。自己无意当中看到下面这段程序后,发现自己彻底懵了,问了一些朋友,知道的也不多,突然觉得自己对枚举的认知量太少。通过学习JLS的enum types的规范后,总结了关于枚举的相关内容。 enum Operation { PLUS { double eval(d
Java构造函数调用顺序问题
java构造代码调用顺序研究。
Java——return在构造函数的作用
构造函数可以使用return来结束函数。   摘自String.class /** * Package private constructor. Trailing Void argument is there for * disambiguating it against other (public) constructors. * * St...
构造函数有没有返回值的总结
这个问题已经有人讨论过,最近在Java版再次被人提出来了。疑问在于如下的代码:String str = new String("content"); new 的时候调用构造函数,返回给str;从语法上讲,构造函数不允许有返回值,就算是 void 也不行。这里的new 是调用构造函数,在堆里分配了一个String对象,并让str指向这个对象。实际上是那个 new 在起作用,而不是()在起作用。下面是
避免用序列化类在构造函数中为不变量赋值
避免用序列化类在构造函数中为不变量赋值 我们知道带有final标识的属性是不变量,也就是说只能赋值一次,不能重复赋值,但是在序列化类中就有点复杂了,比如有这样一个类: public class Person implements Serializable{           private static final long serialVersionUID = 71282334L;
静态变量、静态构造函数、构造函数的初始化时机
今天C#课上,老师讲到了关于静态变量、静态构造函数、构造函数的问题,感觉挺不错的。在Java中也测试了一下,基本是一致的,只是形式有所不同。做个记录,也给大家分享一波。 关于这三个概念的问题主要注意以下几点: 一、初始化次序(依次是静态变量、静态构造函数、构造函数) 二、初始化次数(静态的都只会初始化一次) 三、初始化时机(对于静态的只要使用了类,就会初始化,非静态的则要在创建对象的时候才
【c++深度解析2】C ++ 中构造函数的构造顺序和析构函数中的析构顺序
问题一 : 析构函数的顺序和构造函数的顺序有什么关系 答:析构函数的顺序和构造函数的顺序相反 问题二: 单个对象创建时构造函数的调用顺序是怎样的 答:1.。先调用父类的构造过程(调用父类的构造函数)         2。再调用成员变量的构造函数(注意:该处构造函数的调用顺序只与申明时有关,与其在初始化列表的顺序无关).       3. 最后调用自身的构造函数 问题三:有全局对象,栈对...
关于java继承的一道经典面试题
package com.test; class Father{ int x = 1; public Father(){ System.out.println("father"); } public Father(String s){ System.out.println("father:"+s); } } class Son extends Father{ int x
Java 使用Builder解决构造函数参数过多的问题
Effective Java学习笔记 通过使用Builder模式,解决构造函数中参数过多的问题
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 区块链问题 ios视频开发问题