在Java中,如何仅对ArrayList中的内容执行操作?

在Java中,如何仅对ArrayList中的内容执行操作?,java,arraylist,minecraft,Java,Arraylist,Minecraft,这是我之前问题的重写,因为我被告知它太长了 if(/*This is where I need something*/) { mc.thePlayer.swingItem(); mc.playerController.attackEntity(mc.thePlayer, e); delay = 0; break; } 这是Minecraft中KillAura代码的一部分。我正在努力使它不以我所做的朋友列表中的人为目标。该列表是名为Variables.java文件

这是我之前问题的重写,因为我被告知它太长了

if(/*This is where I need something*/)
{
    mc.thePlayer.swingItem();
    mc.playerController.attackEntity(mc.thePlayer, e);
    delay = 0;
    break;
}
这是Minecraft中KillAura代码的一部分。我正在努力使它不以我所做的朋友列表中的人为目标。该列表是名为Variables.java文件中名为“friendslist”的ArrayList。如果有人能向我解释我是如何使它不针对我的朋友名单上的人,我将非常感激。请保持简洁,因为我对java比较陌生

提前谢谢


Matt

要查找对象是否不在列表中,请使用:

if (!friendslist.contains(otherPlayer))
其中,
friendslist
是您的好友列表,
otherPlayer
是要查看是否在您的好友列表中的玩家


您可以阅读更多信息,并且一个
ArrayList
对象有一个名为
contains
的方法。使用此方法可以测试对象是否是集合的一部分。读这本书

工作实例

ArrayList people=new ArrayList();
//定义集合。
人员p=新人员(“Dave”);
//创建一个新的测试对象。
新增(p);
//将对象添加到集合中。
if(人员包含(p))
{
//将打印出来,因为P存在于人员集合中。
System.out.println(“集合中存在对象”);
}
对我最初答案的改进 正如评论中所建议的,考虑到这是一个游戏的比较算法,您可能需要对其进行进一步优化。考虑到这一点,我想到了使用一个

HashMap示例

HashMap-friends=newhashmap();
//创建HashMap对象。
人员p=新人员(“Dave”);
//创建一个名为“Dave”的测试对象。
String key=p.getName();
//拿钥匙。在本例中,为对象的名称。
朋友。放(键,p);
//将此人添加到集合中。
有了这段代码,您的HashMap集合中现在有了一个人。现在,当有人走进你的“攻击光环”时,你可以简单地得到那个人的名字,并检查你的HashMap中是否存在一个密钥。这是快速(O(1)复杂度)和准确的,最重要的是,您正在比较自定义值;不是同一个物体。因此,用户可以回收他们的对象,并且仍然可以存储在您的集合中


希望这个编辑会有所帮助:)

要知道所有的片段是什么有点困难,但是如果friendslist是一个包含玩家对象的数组列表,而玩家就是你要检查的对象,那么

if (!(friendslist.contains(mc.thePlayer)))

可能重复没有逗号
if语句
Java
中的括号
{
之间。谢谢你的帮助,但是有没有什么方法可以对我添加到朋友列表中的任何人执行此操作。我忘了提一下我使用了聊天命令。如果它键入。添加它会将他们添加到我的朋友列表中。它添加的字符串(他们键入的字符串)我建议使用
集合而不是
列表
集合
有保证的O(1)
包含
方法,
列表
可能是O(n).同意;我想就游戏而言,我们需要考虑算法的复杂性。我会在中编辑你的答案。@BobLoader你想让那个人靠近你吗。检查你的收藏中是否有他们,然后采取相应的行动。我会为你更改我的答案。非常感谢你试图帮助Chris。我可能应该更改我的原始答案“对java非常陌生”的问题,因为我对哈希映射的事情非常困惑。我将解释我的设置,如果您能帮助我将其适应我的设置,我将非常感谢。我有一个名为Variables.java的文件,它创建了当前的数组列表和字符串“friend”这就是我用来将人们键入的用户名添加到列表中的方法。还有一个名为EntityClientPlayerMP.java的文件,其中包含用于将人们添加到列表中的聊天命令。在该文件下,它基本上表示“如果该名称已经存在,请删除它,如果不存在,请添加它”。我猜是我将哈希映射创建放在Variables.java中而不是ArrayList中。我得到的最远的结果是。我假设该字符串应该是玩家键入的字符串“friend”,但我不完全确定person下应该放什么以及其他位放在哪里。
HashMap<String, Person> friends = new HashMap<String, Person>();
// Create the HashMap object.
Person p = new Person("Dave");
// Create a test object, with the name "Dave".
String key = p.getName();
// Get a key. In this case, the object's name.
friends.put(key, p);
// Add the person to the collection.
if (!(friendslist.contains(mc.thePlayer)))