如何使用 ArrayList.contain() 检查 java 中的对象
How to use the ArrayList.contain() to check the object in java
我正在练习 ArrayList with contains 方法。为了检查 ArrayList 中的对象,每次我需要使用 for each 循环遍历整个 ArrayList。因此,我在想是否有办法使用 contains
方法进行此类检查。
我提到过这个 post:How does a ArrayList's contains() method evaluate objects?
但我是java的新手,并不太了解该方法的含义。是不是要重写equals()
方法来检查对象?非常感谢任何帮助。
这是我尝试检查用户是否存在于 playerList
中的方法。
public void showCertainPlayerInformation(ArrayList<NimPlayer> playerList, String inputName)
{
System.out.println("The request to show the name: "+ inputName);
//trying to use the contains method, but it seems impossible
//if (playerList.contains(NimPlayer.getUserName().equals(inputName)))
for (NimPlayer player : playerList)
{
String userCheck = player.getUserName();
String familyName = player.getFamilyName();
String givenName= player.getGivenName();
int gamesWon = player.getGamesWon();
int gamesPlayed = player.getGamesPlayed();
if (userCheck.equals(inputName))
{
System.out.println(inputName + "," + givenName + ","
+ familyName + "," + gamesPlayed + " games," + gamesWon + " wins");
return;
}
}
System.out.println("The player does not exist");
}
是的。您需要像这样定义您的 NimPlayer class(如果您只想通过用户名比较两个 NimPlayer 对象)
package com.example.schooltimetable;
import java.util.Objects;
public class NimPlayer {
private String userName;
private String familyName;
private String givenName;
private int gamesWon;
private int gamesPlayed;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getFamilyName() {
return familyName;
}
public void setFamilyName(String familyName) {
this.familyName = familyName;
}
public String getGivenName() {
return givenName;
}
public void setGivenName(String givenName) {
this.givenName = givenName;
}
public int getGamesWon() {
return gamesWon;
}
public void setGamesWon(int gamesWon) {
this.gamesWon = gamesWon;
}
public int getGamesPlayed() {
return gamesPlayed;
}
public void setGamesPlayed(int gamesPlayed) {
this.gamesPlayed = gamesPlayed;
}
@Override
public boolean equals(Object o) {
if (this == o)
return true;
if (o == null || getClass() != o.getClass())
return false;
NimPlayer nimPlayer = (NimPlayer) o;
return Objects.equals(userName, nimPlayer.userName);
}
@Override
public int hashCode() {
return Objects.hash(userName);
}
}
现在检查数组列表是否包含:
public void showCertainPlayerInformation(ArrayList<NimPlayer> playerList, String inputName)
{
NimPlayer n = new NimPlayer();
n.setUserName(inputName);
if(playerList.contains(n)){
....
return;
}
System.out.println("The player does not exist");
}
您可以转到方法声明(CTRL + 单击方法名称)并检查其实现。 contains()
使用 equals()
检查传递的对象是否等于任何元素。并且 equals()
声明可以在 Object
class:
中找到
数组列表Class:
public boolean contains(Object var1) {
return this.indexOf(var1) >= 0;
}
public int indexOf(Object var1) {
int var2;
if (var1 == null) {
for(var2 = 0; var2 < this.size; ++var2) {
if (this.elementData[var2] == null) {
return var2;
}
}
} else {
for(var2 = 0; var2 < this.size; ++var2) {
if (var1.equals(this.elementData[var2])) {
return var2;
}
}
}
return -1;
}
对象Class:
public boolean equals(Object var1) {
return this == var1;
}
我正在练习 ArrayList with contains 方法。为了检查 ArrayList 中的对象,每次我需要使用 for each 循环遍历整个 ArrayList。因此,我在想是否有办法使用 contains
方法进行此类检查。
我提到过这个 post:How does a ArrayList's contains() method evaluate objects?
但我是java的新手,并不太了解该方法的含义。是不是要重写equals()
方法来检查对象?非常感谢任何帮助。
这是我尝试检查用户是否存在于 playerList
中的方法。
public void showCertainPlayerInformation(ArrayList<NimPlayer> playerList, String inputName)
{
System.out.println("The request to show the name: "+ inputName);
//trying to use the contains method, but it seems impossible
//if (playerList.contains(NimPlayer.getUserName().equals(inputName)))
for (NimPlayer player : playerList)
{
String userCheck = player.getUserName();
String familyName = player.getFamilyName();
String givenName= player.getGivenName();
int gamesWon = player.getGamesWon();
int gamesPlayed = player.getGamesPlayed();
if (userCheck.equals(inputName))
{
System.out.println(inputName + "," + givenName + ","
+ familyName + "," + gamesPlayed + " games," + gamesWon + " wins");
return;
}
}
System.out.println("The player does not exist");
}
是的。您需要像这样定义您的 NimPlayer class(如果您只想通过用户名比较两个 NimPlayer 对象)
package com.example.schooltimetable;
import java.util.Objects;
public class NimPlayer {
private String userName;
private String familyName;
private String givenName;
private int gamesWon;
private int gamesPlayed;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getFamilyName() {
return familyName;
}
public void setFamilyName(String familyName) {
this.familyName = familyName;
}
public String getGivenName() {
return givenName;
}
public void setGivenName(String givenName) {
this.givenName = givenName;
}
public int getGamesWon() {
return gamesWon;
}
public void setGamesWon(int gamesWon) {
this.gamesWon = gamesWon;
}
public int getGamesPlayed() {
return gamesPlayed;
}
public void setGamesPlayed(int gamesPlayed) {
this.gamesPlayed = gamesPlayed;
}
@Override
public boolean equals(Object o) {
if (this == o)
return true;
if (o == null || getClass() != o.getClass())
return false;
NimPlayer nimPlayer = (NimPlayer) o;
return Objects.equals(userName, nimPlayer.userName);
}
@Override
public int hashCode() {
return Objects.hash(userName);
}
}
现在检查数组列表是否包含:
public void showCertainPlayerInformation(ArrayList<NimPlayer> playerList, String inputName)
{
NimPlayer n = new NimPlayer();
n.setUserName(inputName);
if(playerList.contains(n)){
....
return;
}
System.out.println("The player does not exist");
}
您可以转到方法声明(CTRL + 单击方法名称)并检查其实现。 contains()
使用 equals()
检查传递的对象是否等于任何元素。并且 equals()
声明可以在 Object
class:
数组列表Class:
public boolean contains(Object var1) {
return this.indexOf(var1) >= 0;
}
public int indexOf(Object var1) {
int var2;
if (var1 == null) {
for(var2 = 0; var2 < this.size; ++var2) {
if (this.elementData[var2] == null) {
return var2;
}
}
} else {
for(var2 = 0; var2 < this.size; ++var2) {
if (var1.equals(this.elementData[var2])) {
return var2;
}
}
}
return -1;
}
对象Class:
public boolean equals(Object var1) {
return this == var1;
}