Java 在arraylist中搜索和更改对象

Java 在arraylist中搜索和更改对象,java,Java,我有一个包含对象的ArrayList。我一直想要/需要做的是在ArrayList中搜索一个特定的对象,并在找到它时更改其中一个值。也就是说,我有一个足球队,比如费城老鹰队,它包含球队名称、得分总数和麻袋总数,然后按名字、姓氏、比赛和位置列出所有球员。我正在寻找一名特别的球员,比如查德·霍尔,我想把他从老鹰队中除名,然后把他交易给新英格兰爱国者队。到目前为止,我已经完成了ArrayList的迭代,但是我的代码没有找到播放器,然后退出 case 6: String name =

我有一个包含对象的ArrayList。我一直想要/需要做的是在ArrayList中搜索一个特定的对象,并在找到它时更改其中一个值。也就是说,我有一个足球队,比如费城老鹰队,它包含球队名称、得分总数和麻袋总数,然后按名字、姓氏、比赛和位置列出所有球员。我正在寻找一名特别的球员,比如查德·霍尔,我想把他从老鹰队中除名,然后把他交易给新英格兰爱国者队。到目前为止,我已经完成了ArrayList的迭代,但是我的代码没有找到播放器,然后退出

case 6:
           String name = "";
           System.out.print("Who would you like to trade? ");
           name = kb.nextLine();
           tradePlayer(nflTeams, name);

public static void tradePlayer(ArrayList<Team> nflTeams, String name)
  {
     Scanner kb = new Scanner(System.in);
     String teamName = "";
     System.out.print("What team do you want to trade this player to?(Team Acronym) "    );
     teamName = kb.nextLine();

     for(Team t: nflTeams){
        if (nflTeams.contains(name.toLowerCase()))
                      t.setName(teamName);
                }
     System.out.println("Cannot find " + name);
  }
案例6:
字符串名称=”;
System.out.print(“您想交易谁?”);
name=kb.nextLine();
贸易玩家(nflTeams,名称);
公共静态void tradePlayer(ArrayList nflTeams,字符串名称)
{
扫描仪kb=新扫描仪(System.in);
字符串teamName=“”;
System.out.print(“你想把这个球员交易给哪支球队?(球队缩写)”;
teamName=kb.nextLine();
对于(t组:nflTeams){
if(nflTeams.contains(name.toLowerCase()))
t、 集合名(团队名);
}
System.out.println(“找不到”+名称);
}
Player
类包括按名字、姓氏、球队、位置和所玩游戏构建的玩家。我想改变的是球队。在
Team
类中,我有
setName(String)
来设置团队名称


非常感谢您的任何建议或想法。

您必须从球队中获得球员名单,并通过指定的
姓名将其删除,如:

String teamToAddNewPlayer = "New England Patriots";
String deletedPlayer = null;
for(Team t: nflTeams){
      List<String> players = t.getPlayers();
      if (players.contains(name)){
          deletedPlayer = players.remove(name);
      }
      if (t.getName().equals(teamToAddNewPlayer))
          players.add(name);
}
if (deletedPlayer == null)
//nothing was deleted
else
//player was deleted
String teamToAddNewPlayer=“新英格兰爱国者”;
字符串deletedPlayer=null;
对于(t组:nflTeams){
List players=t.getPlayers();
if(players.contains(name)){
deletedPlayer=players.remove(名称);
}
if(t.getName().equals(teamToAddNewPlayer))
玩家。添加(姓名);
}
if(deletedPlayer==null)
//没有删除任何内容
其他的
//玩家被删除了
if(nflTeams.contains(name.toLowerCase())

你想干什么?您的列表
nflTeams
包含
Team
对象而不是名称。
这是行不通的。

如果您需要通过其
名称访问
团队
,请改用
映射

使用迭代器将使您能够更好地控制正在尝试的内容

import java.util.*;

 class IteratorDemo {


public static void main(String args[]) {
      // Create an array list
      ArrayList al = new ArrayList();
      // add elements to the array list
      al.add("C");
      al.add("A");
      al.add("E");
      al.add("B");
      al.add("D");
      al.add("F");

  // Use iterator to display contents of al
  System.out.print("Original contents of al: ");
  Iterator itr = al.iterator();
  while(itr.hasNext()) {
     Object element = itr.next();
     System.out.print(element + " ");
  }
  System.out.println();

  // Modify objects being iterated
  ListIterator litr = al.listIterator();
  while(litr.hasNext()) {
     Object element = litr.next();
     litr.set(element + "+");
  }
  System.out.print("Modified contents of al: ");
  itr = al.iterator();
  while(itr.hasNext()) {
     Object element = itr.next();
     System.out.print(element + " ");
  }
  System.out.println();

  // Now, display the list backwards
  System.out.print("Modified list backwards: ");
  while(litr.hasPrevious()) {
     Object element = litr.previous();
     System.out.print(element + " ");
   }
   System.out.println();
}
}

这个例子来自于

Mmn,内容看起来不可靠。。