我正在试图找出一个列表是否包含一个字符串。我有一个list对象如下:
请注意,这只是示例代码,以说明我的观点/问题!
import java.util.List;
public class FilterByList {
private String actionHero;
private String actionHero2;
private String move;
private int number;
private String actionHero3;
public FilterByList(String actionHero, String actionHero2, String move, int number, String actionHero3) {
this.actionHero = actionHero;
this.actionHero2 = actionHero2;
this.move = move;
this.number = number;
this.actionHero3 = actionHero3;
}
public String getActionHero() {
return actionHero;
}
public void setActionHero(String actionHero) {
this.actionHero = actionHero;
}
public String getActionHero2() {
return actionHero2;
}
public void setActionHero2(String actionHero2) {
this.actionHero2 = actionHero2;
}
public String getMove() {
return move;
}
public void setMove(String move) {
this.move = move;
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
public String getActionHero3() {
return actionHero3;
}
public void setActionHero3(String actionHero3) {
this.actionHero3 = actionHero3;
}
}然后:
public static void main(String[] args) {
List<FilterByList> myList = Collections.singletonList(
new FilterByList("superman", "antman", "ACTION", 123, "batman"));
System.out.println(myList);
if (myList.contains("batman")) {
System.out.println("found it!");
} else {
System.out.println("************************* Did not find anything!!1");
}
}它在list对象中找不到batman。因此,印刷的内容如下:
[com.company.FilterByList@7577b641]
************************* Did not find anything!!1你知道我该怎么做吗?
( a)打印清单内容? ( b)在列表中找到一个代码尽可能少的元素?
会很感激你的帮助。--请使用我的代码上下文来回答,因为它会给我更多的指针。
发布于 2018-12-28 14:04:36
您可以将两种不同类型的对象放入列表中,例如String和Integer (如果您愿意省略泛型类型 ),并隐式地将其作为List<Object> myList = new ArrayList<Object>(); (例如:
List myList = new ArrayList();
myList.add("superman");
myList.add("antman");
myList.add("ACTION");
myList.add(123);
myList.add("batman");
System.out.println(myList);
if (myList.contains("batman")) {
System.out.println("found it!");
} else {
System.out.println("************************* Did not find anything!!1");
}但这不是一种使用集合的好方法。当然,这取决于您的特定任务,但我想建议您使用不同类型的不同集合。
如果你想要达到你想要的目标,你可以像这样使用流API:
List<FilterByList> myList = Collections.singletonList(
new FilterByList("superman", "antman", "ACTION", 123, "batman"));
System.out.println(myList);
if (myList.stream().map(FilterByList::getActionHero3).allMatch("batman"::equals)) {
System.out.println("found it!");
} else {
System.out.println("************************* Did not find anything!!1");
}如果集合中有多个元素,则使用anyMatch方法更可取:
(myList.stream().map(FilterByList::getActionHero3).anyMatch("batman"::equals))发布于 2018-12-28 14:02:55
运行包含在List<FilterByList>上,并且该列表没有字符串batman --它有FilterByList的实例,其中一个成员是String类型的字段和值'batman‘
根据你的代码。创建对象FilterByList的实例,并尝试将该对象与String进行比较。
线路
if (myList.contains("batman")) {这些对象是不同的类型,这就是为什么找不到它的原因。
要检查是否有蝙蝠侠,可以使用Stream
boolean d = myList.stream().map(FilterByList::getActionHero3).anyMatch(hero3 -> hero3.equals("batman"));发布于 2018-12-28 14:16:25
添加到FilterByList类containsHero(String hero)中,将hero与3位英雄中的每一个进行比较。您不需要将这个单一对象存储在列表中。就用它吧。
FilterByList f = new FilterByList("superman", "antman", "ACTION", 123, "batman");
if (f.containsHero("batman")) {
System.out.println("found it!");
} else {
System.out.println("************************* Did not find anything!!1");
}你想做的一切看起来都很奇怪.
https://stackoverflow.com/questions/53959660
复制相似问题