Java Test element in an array
0
我想做的是:
1 2 3 4 5 6 7 8 9 10 11 12
| 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
}
} |
有人能帮忙吗?
1 2 3 4 5 6 7 8
| if(newAray.contains(s))
{
//do nothing
}
else
{
//add to newArray
} |
- 它不起作用。我的编译器说"不能在数组类型string[]上调用contains(string)"。
- 对不起,达斯布林肯利思有答案。您需要在for(s:myarray):listtmp=new arraylist(arrays.aslist(newarray))之前执行此操作;
不能随意向数组添加项,因为数组的大小是固定的。您需要先将数组转换为列表,然后将项添加到TE列表,最后将列表转换回数组:
1 2 3 4 5 6 7
| 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()]); |
- 实际上,如果他在做我认为他在做的事情,并且试图避免添加重复项,那么他可能会首先将其转换为set的实现。set是一个通用接口(很像list,其中linkedlist是一个实现),它不允许重复元素,因此您可以对myarray的每个元素调用set的add方法,并确保如果它已经在集合中,则它不会被添加两次。
- @使用集合的cosmiccomputer不是等效的,因为它不会在原始数组中保留重复项,也不会保留插入顺序(除非使用链接哈希集)。
- 我假设他不需要数组中的任何重复项,也不特别关心顺序。对不起,应该说的。这是从代码片段中粗略推断出来的。