Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-将单个字符串值与ArrayList中的所有字符串值进行比较_Java_String_List_Arraylist - Fatal编程技术网

Java-将单个字符串值与ArrayList中的所有字符串值进行比较

Java-将单个字符串值与ArrayList中的所有字符串值进行比较,java,string,list,arraylist,Java,String,List,Arraylist,我有一个ArrayList,其中包含一组(相同)字符串值,我需要将这些值与单个字符串值进行比较,并返回true或false。有什么办法吗 那是爪哇语吗 例如,假设我有一个ArrayList,其中有5个值=foo,foo,foo,foo,foo(我的要求是ArrayList中的所有值都相同),我有一个字符串str=“foo”。我需要验证arraylist中的所有值是否与字符串值相同,即arraylist中的所有值都应该是“foo” 我试着用谷歌搜索这些信息,我所能看到的只是建议以不同的方式使用co

我有一个
ArrayList
,其中包含一组(相同)字符串值,我需要将这些值与单个字符串值进行比较,并返回true或false。有什么办法吗 那是爪哇语吗

例如,假设我有一个
ArrayList
,其中有5个值=foo,foo,foo,foo,foo(我的要求是ArrayList中的所有值都相同),我有一个
字符串str=“foo”
。我需要验证arraylist中的所有值是否与字符串值相同,即arraylist中的所有值都应该是
“foo”

我试着用谷歌搜索这些信息,我所能看到的只是建议以不同的方式使用
contains()
方法,即使arraylist中的任何值包含指定的值,该方法也会返回true

我甚至想出了一个解决办法——创建另一个具有预期值的arraylist,并使用
equals()
方法比较这两个列表
工作。我只是想知道是否有任何简单的方法来实现这一点。

您可以使用此方法来实现这一点

private boolean allAreSame(ArrayList<String> stringList, String compareTo){
    for(String s:stringList){
        if(!s.equals(compareTo))
             return false;
    }
    return true;
}
private boolean allAreSame(ArrayList stringList,String compareTo){
用于(字符串s:stringList){
如果(!s.equals(compareTo))
返回false;
}
返回true;
}

如果要知道数组是否包含字符串,请使用


Java 8很简单:

String str = "foo";
List<String> strings = Arrays.asList("foo", "foo", "foo", "foo", "foo");
boolean allMatch = strings.stream().allMatch(s -> s.equals(str));
1) 可以将arraylist传递到集合中

2) 现在可以得到集合的大小,如果它等于1,则表示所有元素都相同

3) 现在,您可以使用contains on集合检查您的值是否存在于其中

public static void main(String[] args){
          String toBeCompared="foo";
          List<String> list=new ArrayList<String>();
          list.add("foo");
          list.add("foo");
          list.add("foo");
          list.add("foo");
          list.add("foo");
          Set<String> set=new HashSet<String>(list);
          if(1==set.size()){
              System.out.println(set.contains(toBeCompared));
          }
          else{
             System.out.println("List has different values");
          }
    }
publicstaticvoidmain(字符串[]args){
字符串tobecompare=“foo”;
列表=新的ArrayList();
列表。添加(“foo”);
列表。添加(“foo”);
列表。添加(“foo”);
列表。添加(“foo”);
列表。添加(“foo”);
Set Set=新哈希集(列表);
如果(1==set.size()){
System.out.println(set.contains(tobecompare));
}
否则{
System.out.println(“列表有不同的值”);
}
}

我会这样做:

ArrayList<String> foos = new ArrayList<>();
String str = "foo";     
for (String string : foos) {
    if(string.equals(str)){
            System.out.println("True");
    }
}
ArrayList foos=new ArrayList();
字符串str=“foo”;
for(字符串:foos){
if(string.equals(str)){
System.out.println(“真”);
}
}


只需迭代列表并将每个项目与您的
字符串进行比较
。如果所有值都相等,
true
,如果任何值不相等,
false
。我可以这样做,但我正在寻找一个单行解决方案,就像@steffen建议的那样。应该使用!等于而不是=它将返回相同的内容,但我将修复它fyi:
==
测试引用相等性(它们是否是相同的对象)
.equals()
测试值是否相等(它们在逻辑上是否“相等”)。因此,如果你想测试两个字符串是否具有相同的值,你应该使用
.equals()
,因为有很多情况下
=
不会返回
true
进行比较。谢谢你以后的参考,但我已经解决了:)OP说这不是他们想要的,因为它只看到一个字符串是否相等,问题是他想检查列表中的每个条目是否都是相同的值。OP说,必须将列表中的所有字符串进行比较,使其与给定的字符串相等。为清楚起见,可能是
final string str=“foo”。对于千千万万的foo来说,一个
parallelStream()
可能是个好主意。java8正在兴起+1@steffen杰出的这正是我要找的,而且很有效。非常感谢。另外,我对java还是新手。因此,如果您能够解释这一行的具体功能,将更有帮助
boolean allMatch=strings.stream().allMatch(s->s.equals(str))@Just好奇关于它的文档太多了,在这里解释起来太复杂了。搜索Java8Lambda和Streams。简而言之:Java8提供了类似于Unix管道的流。使用streams可以迭代集合并执行一个或多个操作
allMatch()
是一种短路终端操作,意味着迭代在遇到第一个不匹配项后立即停止,并返回
false
。如果所有项目都匹配,则返回
true
。非常感谢!这有助于:)或在步骤3中使用
Set.contains()
newhashset(list.size()==1&&str.equals(list.get(0))
-不从集合中获取它以使其成为单行。@KDM-
HashSet
HashSet
会更好,我相信。@realpoint在传递集合时不在java 8中。注意到这点。@realpoint谢谢你的评论,编辑了我的答案。
boolean allMatch = true;
for (String string : strings) {
    if (!string.equals(str)) {
        allMatch = false;
        break;
    }
}
public static void main(String[] args){
          String toBeCompared="foo";
          List<String> list=new ArrayList<String>();
          list.add("foo");
          list.add("foo");
          list.add("foo");
          list.add("foo");
          list.add("foo");
          Set<String> set=new HashSet<String>(list);
          if(1==set.size()){
              System.out.println(set.contains(toBeCompared));
          }
          else{
             System.out.println("List has different values");
          }
    }
ArrayList<String> foos = new ArrayList<>();
String str = "foo";     
for (String string : foos) {
    if(string.equals(str)){
            System.out.println("True");
    }
}