如何使用函数| Java擦除当前对象

如何使用函数| Java擦除当前对象,java,Java,我正在尝试使用构造函数中的团队代码值c创建一个擦除函数来删除锦标赛中的团队。首先,我想检查我在main方法中创建的对象中是否存在该团队。使用if语句可以做到这一点吗 练习: 创建一个java应用程序,用于存储各种足球队的数据。每支球队都有一个名字,一个代码和目前的积分。在您的类中,创建注册新团队、使用代码删除现有团队以及显示当前在锦标赛中活动的所有团队的列表的方法 你想从中删除哪些团队 例如,如果它们在列表中 Data t1 = new Data(110,42,"Juventus"

我正在尝试使用构造函数中的团队代码值c创建一个擦除函数来删除锦标赛中的团队。首先,我想检查我在main方法中创建的对象中是否存在该团队。使用if语句可以做到这一点吗

练习:

创建一个java应用程序,用于存储各种足球队的数据。每支球队都有一个名字,一个代码和目前的积分。在您的类中,创建注册新团队、使用代码删除现有团队以及显示当前在锦标赛中活动的所有团队的列表的方法


你想从中删除哪些团队

例如,如果它们在列表中

       Data t1 = new Data(110,42,"Juventus");
       Data t2= new Data(105,45,"Manchester City");
       Data t3= new Data(240,50,"Barcelona");
       Data t4= new Data(122,36,"Arsenal");

       List<Data> teams = Arrays.asList(t1, t2, t3, t4);
…你可以创建一个列表,删除一个团队,如下所示

public List<Data> erase(List<Data> team, int id) {
    return team.stream()
               .filter(t -> t.getId() != id)
               .collect(Collectors.toList());
}
所以

…将从列表中删除第一个元素

简短回答:

但这对您当前的代码不起作用。您当前的代码丢失了团队的容器

详细回答:

为了好玩。解决家庭作业:

class Team {
  int id;
  String name;
  int points;
  Team(int id, String name, int points) {
    this.id = id;
    this.name = name;
    this.points = points;
  }

  @Override
  public String toString() {
     // ugly formatted... another homework? ;-)
     return "Team '" + name + "' (" + id + "): " + points;
  }
}
注意,我不会添加任何getter或setter,也不会关心这里的可见性。我会把它作为另一个家庭作业留给你

class Championship {
  List<Team> teams = new ArrayList<>();

  void register(Team team) {
    teams.add(team);
  }

  void erase(int id) {
     teams.removeIf(team -> team.id == id);
  }

  @Override
  public String toString() {
     // for additional fun... sorted by descending points
     return "=== Championship table ===\n"
             + teams.stream()
             .sorted((o1, o2) -> Integer.compare(o2.points, o1.points))
             .map(Objects::toString)
             .collect(Collectors.joining("\n"));
  }
}
输出:

=== Championship table ===
Team 'The winners' (3): 11
Team 'The better ones' (2): 7
Team 'not the best ones' (1): 3
=== Championship table ===
Team 'The better ones' (2): 7
Team 'not the best ones' (1): 3
信息太多?只需从冠军课程开始,或者至少使用一组团队,例如列表


顺便说一下。。。不要把这个解决方案当作你的家庭作业,除非你明白发生了什么,你可以用自己的话来解释。否则你只会背叛你自己。

我不会详细回答这个问题,因为这是家庭作业。不过我会给你一个提示

如果你有一个团队并且想用它做点什么。否则,您的团队只会停留在特定的位置。如果您不知道作用域是什么,请查找它!。如果你有一个团队,你很可能想用它做点什么。在这种情况下,您似乎希望存储有关锦标赛中使用的球队的信息。这里需要注意的重要一点是,团队不是这里的焦点。真正的焦点是冠军。这些球队只是冠军的一部分。即使不是所有球队都选择参加,仍然可以获得冠军。但是你想让所有选择参加的球队都注册参加这个特别的锦标赛,比如欧洲冠军联赛

这导致了一种称为或取决于你想将物体与冠军绑定的难度。然而,在这一点上,您可能不需要进一步追求这些条款。重要的是要记住,冠军和球队之间有着密切的关系。锦标赛有一批参赛队伍。这通常以这种方式反映在代码中

public class Championship {
   private Team[] teams; // Or List<Team>, Collection<Team>, HashMap<Team>, ...
}

希望这有帮助

如果您有一个团队数组,则可以使用此Arrays.asListyourArray.containsyourValue.Unrelated的可能重复项,但请为您的ctor选择一个约定。例如,传入与属性相同的名称,并始终使用this.code=code。不清楚你在问什么你只是想检查c==代码?你没有任何东西的集合,我们不知道团队是什么样子,等等。我做了一个函数来删除团队。我想做的很简单。在此处使用Team.exe团队代码。我想检查团队代码是否存在于我在main方法中创建的对象中。就像下面的例子一样comments@Eternal我的观点与后面的评论大致相同。总的来说,你们只有分散的团队,顺便说一句,你们称之为数据,这使得我们很难知道我们谈论的是什么类型的数据。您需要某种对象以结构化方式收集所有数据。现在,您甚至没有任何东西可以添加数据或从中删除数据。这就好像你说你想从文本中删除一些字母。如果你在沙滩上写了4封信,你没有文字,对吗?有一篇课文需要你写一些连贯的东西。首先,我认为解决家庭作业问题不是一个好主意,请参见Meta。其次,我认为Eternal正在参加的课程还没有达到可以处理流和lambda的水平……感谢链接。我不知道。然而,即使解决方案现在已经完成,也不一定是可以理解的,除非理解一些基本知识。尽管如此,我还是希望底部的暗示能引导正确的方向。
class Championship {
  List<Team> teams = new ArrayList<>();

  void register(Team team) {
    teams.add(team);
  }

  void erase(int id) {
     teams.removeIf(team -> team.id == id);
  }

  @Override
  public String toString() {
     // for additional fun... sorted by descending points
     return "=== Championship table ===\n"
             + teams.stream()
             .sorted((o1, o2) -> Integer.compare(o2.points, o1.points))
             .map(Objects::toString)
             .collect(Collectors.joining("\n"));
  }
}
public static void main(String[] args) {
  Championship championship = new Championship();
  championship.register(new Team(1, "not the best ones", 3));
  championship.register(new Team(2, "The better ones", 7));
  championship.register(new Team(3, "The winners", 11));
  System.out.println(championship);

  championship.erase(3);
  System.out.println(championship);
}
=== Championship table ===
Team 'The winners' (3): 11
Team 'The better ones' (2): 7
Team 'not the best ones' (1): 3
=== Championship table ===
Team 'The better ones' (2): 7
Team 'not the best ones' (1): 3
public class Championship {
   private Team[] teams; // Or List<Team>, Collection<Team>, HashMap<Team>, ...
}
public void register(Team t) {
    if (numberOfTeams < teams.length) {
        teams[numberOfTeams] = t; // Index starts at zero
        numberOfTeams++;
    } else {
        throw new IndexOutOfBoundsException("The list is full. " + 
            "No more teams may be registered!")
    }
}
teams[i] = teams[i+1];