首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >试图查找一个java列表对象是否有一个元素字符串或INT?

试图查找一个java列表对象是否有一个元素字符串或INT?
EN

Stack Overflow用户
提问于 2018-12-28 13:55:01
回答 4查看 544关注 0票数 1

我正在试图找出一个列表是否包含一个字符串。我有一个list对象如下:

请注意,这只是示例代码,以说明我的观点/问题!

代码语言:javascript
复制
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;
    }
}

然后:

代码语言:javascript
复制
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。因此,印刷的内容如下:

代码语言:javascript
复制
[com.company.FilterByList@7577b641]
************************* Did not find anything!!1

你知道我该怎么做吗?

( a)打印清单内容? ( b)在列表中找到一个代码尽可能少的元素?

会很感激你的帮助。--请使用我的代码上下文来回答,因为它会给我更多的指针。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-12-28 14:04:36

您可以将两种不同类型的对象放入列表中,例如StringInteger (如果您愿意省略泛型类型 ),并隐式地将其作为List<Object> myList = new ArrayList<Object>(); (例如:

代码语言:javascript
复制
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

代码语言:javascript
复制
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方法更可取:

代码语言:javascript
复制
(myList.stream().map(FilterByList::getActionHero3).anyMatch("batman"::equals))
票数 0
EN

Stack Overflow用户

发布于 2018-12-28 14:02:55

运行包含在List<FilterByList>上,并且该列表没有字符串batman --它有FilterByList的实例,其中一个成员是String类型的字段和值'batman

根据你的代码。创建对象FilterByList的实例,并尝试将该对象与String进行比较。

线路

代码语言:javascript
复制
if (myList.contains("batman")) {

这些对象是不同的类型,这就是为什么找不到它的原因。

要检查是否有蝙蝠侠,可以使用Stream

代码语言:javascript
复制
boolean d = myList.stream().map(FilterByList::getActionHero3).anyMatch(hero3 -> hero3.equals("batman"));
票数 1
EN

Stack Overflow用户

发布于 2018-12-28 14:16:25

添加到FilterByList类containsHero(String hero)中,将hero与3位英雄中的每一个进行比较。您不需要将这个单一对象存储在列表中。就用它吧。

代码语言:javascript
复制
  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");
  }

你想做的一切看起来都很奇怪.

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53959660

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档