gpt4 book ai didi

java - 我的 History() 方法面临问题,如何根据最旧的更改进行排序?

转载 作者:行者123 更新时间:2023-12-02 09:26:58 26 4
gpt4 key购买 nike

我应该创建一个 Trace 类,它封装类型 T 的变量及其更改历史记录(作为列表)。可以使用 static of 方法创建 Trace 对象,将其值作为第一个参数传递,将其(可选)历史记录作为其余参数传递。历史记录始终以最早的更改排在最前面。

这是我已经实现的:

import java.util.*;

@SuppressWarnings("unchecked")

class Trace<T>{
ArrayList<T> objects;
//int maxObjects;

public Trace(T... words){
this.objects = new ArrayList<T>();
for (int i = 0; i < words.length; i++){
objects.add(words[i]);
}
}

public static <T> Trace<T> of(T... words){
return new Trace(words);
}

public T get(){
return this.objects.get(0);
}

public List<T> history(){
return this.objects;
}

public String toString(){
String s = "[";
for (int i = 0; i < this.objects.size() - 1; i++){
String line = this.objects.get(i) + ", ";
s += line;
}
s += this.objects.get(objects.size()-1) + "]";
return s;
}
}

但是,当我在 Jshell 上运行程序时,我预计会得到

jshell> Trace.of("hello").get()
$.. ==> "hello"
jshell> Trace.of("hello", "h", "he", "hel", "hell").get()
$.. ==> "hello"
jshell> Trace.of("hello", "h", "he", "hel", "hell").history()
$.. ==> [h, he, hel, hell, hello]

但是,我得到的是:

jshell> Trace.of("hello").get()
$.. ==> "hello"
jshell> Trace.of("hello", "h", "he", "hel", "hell").get()
$.. ==> "hello"
jshell> Trace.of("hello", "h", "he", "hel", "hell").history()
$.. ==> [hello, h, he, hel, hell]

我应该如何更改我的history()方法,使其考虑到之前添加的“hello”,并首先在列表中返回“hello”,然后是h、he、hel、hell?

最佳答案

看来您需要将历史记录与单词本身分开,或者您需要使历史记录方法更智能一些。如果输入中的第一项(单词)应始终是历史记录中的最后一项,则类似的操作会起作用。

    public List<T> history(){
ArrayList<T> history = this.objects.sublist(1, this.objects.length());
return history.add(this.get())
}

关于java - 我的 History() 方法面临问题,如何根据最旧的更改进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58279802/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com