当前位置: 首页 > 知识库问答 >
问题:

存储在ArrayList中的。以及可比性接口是如何工作的?

闻人和泽
2023-03-14

下面我粘贴了整个代码

对于我们读取的DVDInfo.txt中的每一行文本,我们将创建DVDInfo类的新实例并将其存储在ArrayList中。到目前为止,请考虑这个类没有实现任何接口,在main方法中也没有使用任何排序方法。因此,在该条件下,当我们打印DVDListarraylist时,它会打印出文件中的所有内容,而不进行排序。我的第一个疑问是存储在ArrayList中的新实例如何正确地打印文本,我们没有使用任何getter方法来存储ArrayList中的文本。

现在考虑它在main中实现可比接口和collections.sort()的整个代码。

The compareTo() method returns an int with the following characteristics:
* negative if thisObject < anotherObject 
* zero If thisObject == anotherObject 
* positive If thisObject > anotherObject 
    Wrote in SCJP by Kathy/Bates
Donnie Darko/sci-fi/Gyllenhall, Jake
Raiders of the Lost Ark/action/Ford, Harrison
2001/sci-fi/??
Caddy Shack/comedy/Murray, Bill
Star Wars/sci-fi/Ford, Harrison
Lost in Translation/comedy/Murray, Bill
Patriot Games/action/Ford, Harrison
import java.util.*;
import java.io.*;

class DVDInfo implements Comparable<DVDInfo>{
    String title;
    String genre;
    String leadActor;

    DVDInfo(String t, String g, String a){
        title = t; genre = g; leadActor = a;
    }

    public String toString(){
        return title + " " + genre + " " + leadActor + "\n";
    }

    public int compareTo(DVDInfo d){
        return title.compareTo(d.getTitle());
    }

    public String getTitle(){
        return title;
    }

    public String getGenre(){
        return genre;
    }

    public String getLeadActor(){
        return leadActor;
    }

    public void setTitle(String t){
        title = t;
    }

    public void setGenre(String g){
        genre = g;
    }
    public void setLeadActor(String l){
        leadActor = l;
    }


}

public class MyDVD{
    public static void main(String[] args){
        ArrayList<DVDInfo> dvdList = new ArrayList<DVDInfo>();
        populateList(dvdList);

        Collections.sort(dvdList);
        System.out.println(dvdList);

    }

    public static void populateList(ArrayList<DVDInfo> dvdList){
        try{    
            File file = new File("dvdinfo.txt"); 
            FileReader fr = new FileReader(file);
            BufferedReader br = new BufferedReader(fr);

            String s;
            while ((s = br.readLine()) != null){
                String[]tokens = s.split("/");
                dvdList.add(new DVDInfo(tokens[0],tokens[1],tokens[2]));
            }
            br.close();
        }catch(IOException e){System.out.println("File doesn\'t exist");}

    }

}
[2001 sci-fi ??
, Caddy Shack comedy Murray, Bill
, Donnie Darko sci-fi Gyllenhall, Jake
, Lost in Translation comedy Murray, Bill
, Patriot Games action Ford, Harrison
, Raiders of the Lost Ark action Ford, Harrison
, Star Wars sci-fi Ford, Harrison
]

共有1个答案

林祯
2023-03-14

印刷

它使用tostring()方法打印每个dvdinfo对象。

println方法将对其参数执行string.valueof()。然后println代码将打印结果字符串。

 类似资料:
  • 据我所知,当我们创建时: JVM为其保留一部分连续的内存。当我们向列表中添加新元素时,当元素数量达到大小的75%时,它会保留一个新的连续内存部分并复制所有元素。 我们的名单越来越大。我们正在添加新对象,必须再次重建列表。 现在发生了什么? JVM正在寻找连续的内存段,但找不到足够的空间。 垃圾收集器可以尝试删除一些未使用的引用并对内存进行碎片整理。如果在此过程之后JVM无法为list的新实例保留空

  • 实际上,我想对对象数组列表进行排序。我正在为此目的使用可比接口。它是完全有效的,但问题是,当我排序的时候,是给这两个问题。 > 所有名字中有第一个字母大写的都在上面,所有名字中有第一个字母小写的都在下面。 所有排序的大写字母单词都在一起,然后所有的小写字母单词都在一起。

  • 我有一个TF模型,它经过量化训练,冻结,用TOCO转换成tflite,现在我有了tflite HTML图形模型和json。 我可以看到,对于我的图中的每个张量,每个都有量化属性(min,max,scale,zero pt),我试图确定这些属性如何应用于每个张量。 例如,我理解量化数据的表示,并且我可以理解,采用量化权重/偏差,乘以比例并添加最小值会返回原始权重/偏差(几乎)。 我不明白的是: 为什

  • 重写Compariable接口的compareTo()方法的最佳方法是什么?此外,当我们可以编写自己的compareTo()方法而无需实现时,为什么还要实现可比较的接口呢。以以下座椅类别为例: 尽管我们没有实现可比接口,但上述工作仍然有效,那么我们为什么要实现它呢?

  • 问题内容: 经常出现在Python模块中。即使阅读了Python的文档,我也不明白它的用途以及使用时间/方式。 有人可以举例说明吗? 关于我收到的基本用法的一些答案似乎是正确的。 但是,我需要了解有关工作原理的另一件事: 对我来说,最令人困惑的概念是当前的python版本如何包含未来版本的功能,以及如何使用当前版本的Python成功地编译使用未来版本的功能的程序。 我猜想当前版本包含了将来的潜在功

  • 问题内容: 据我所知,当我们创建一个时: JVM为此保留了内存的连续部分。当我们将新元素添加到列表中时,当元素数量达到75%时,它将保留新的连续内存部分并复制所有元素。 我们的名单越来越大。我们正在添加新对象,并且必须再次重建列表。 现在会发生什么? JVM正在寻找连续的内存段,但是找不到足够的空间。 垃圾收集器可以尝试删除一些未使用的引用和碎片整理内存。如果JVM在此过程之后无法为列表的新实例保