Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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测试元素_Java_Arrays_Search_For Loop_Element - Fatal编程技术网

数组中的Java测试元素

数组中的Java测试元素,java,arrays,search,for-loop,element,Java,Arrays,Search,For Loop,Element,可能重复: 我正试着做一种: for(String s : myArray) { if(s is in newArray) //how do you test this? i want something like //if(newArray.indexOf(s)!=-1) { //do nothing } else { //add to newArray } }

可能重复:

我正试着做一种:

for(String s : myArray)
{
    if(s is in newArray) //how do you test this? i want something like
                        //if(newArray.indexOf(s)!=-1)
    {
        //do nothing
    }
    else
    {
        //add to newArray
    }
}

有人能帮忙吗?

您不能随意将项目添加到数组中,因为数组的大小是固定的。首先需要将数组转换为列表,然后将项添加到te列表,最后将列表转换回数组:

if(newAray.contains(s))
{
    //do nothing
}
else
{
    //add to newArray
}
List<String> tmp = new ArrayList<String>(Arrays.asList(newArray));
for(String s : myArray) {
    if(!tmp.contains(s)) {
        tmp.add(s);
    }
}
newArray = tmp.toArray(new String[tmp.size()]);
List tmp=newarraylist(Arrays.asList(newArray));
for(字符串s:myArray){
如果(!tmp.包含){
tmp.add(s);
}
}
newArray=tmp.toArray(新字符串[tmp.size()]);

它不工作了。我的编译器说“无法调用数组类型字符串[]上的Contains(string)”,对不起,dasblinkenligth给出了答案。您需要在for(s:myArray):List tmp=newarraylist(Arrays.asList(newArray))之前执行此操作;事实上,如果他正在做我认为他正在做的事情,并试图避免添加重复项,他可能会首先将其转换为Set的实现。Set是一个通用接口(很像List,LinkedList是它的一个实现),它不允许重复的元素,所以您可以在myArray的每个元素上调用Set的add方法,如果它已经在集合中,请放心,它没有被添加两次。@CosmicComputer使用集合是不等价的,因为它不会在原始数组中保留重复项,也不会保留插入顺序(除非使用链接的哈希集)。我假设他不希望数组中有任何重复项,也不特别关心顺序。对不起,我应该说的。这是从代码片段中粗略推断出来的。