从方法Iterator
返回时,我似乎无法打印removeTwos()
中的元素。我正在尝试从只有两个字符的列表中删除元素。
public class Main {
public static void main(String[] args) {
// write your code here
List<String> list = new ArrayList<>();
list.add("hi");
list.add("what");
list.add("who");
list.add("ok");
System.out.println(removeTwos(list));
}
public static String removeTwos(List<String> stringList) {
Iterator<String> itr = stringList.iterator();
for(int i = 0; i < stringList.size(); i++) {
if(itr.hasNext() && itr.next().length() == 2) {
itr.remove();
System.out.println(itr.toString());
}
}
return itr.toString();
}
}
谢谢。
答案 0 :(得分:1)
要使用Iterator
解决此问题,您可以将removeTwos
方法编辑为类似以下内容:
public static String removeTwos(List<String> stringList) {
Iterator<String> itr = stringList.iterator();
while (itr.hasNext()) {
String value = itr.next();
if (value.length() == 2) {
System.out.println(value);
itr.remove();
}
}
return stringList.toString();
}
使用Iterator
时,可以安全地从列表中删除元素,并循环遍历。 Here's a link证明它是安全的。
答案 1 :(得分:1)
使用流和过滤器很容易1衬纸,除非您需要使用iter。
List<String> noTwos = list.stream().filter(s-> s.length() != 2).collect(Collectors.toList());
答案 2 :(得分:1)
问题是:您根本不需要/etc/registry
来完成您想做的事情。您可以使用列表的方法逐一搜索列表中的每个项目。
尝试以下代码,看看它是否对您有用:
Iterator
答案 3 :(得分:0)
如果您想使用for(int idx..)
循环并删除所有项目,则应从头到尾进行迭代。
for(int idx=stringList.size()-1; idx>=0; idx--){
String val = stringList.get(idx);
if (val.length()==2)
stringList.remove(idx);
}
...later if you want to print a list..
for(int idx=0; idx<stringList.size(); idx++) {
System.out.println( String.format("%d:%s", idx, stringList.get(idx)) );
答案 4 :(得分:0)
我喜欢将url = 'my_url'
payload = {
'client_id': 'my_id',
'api_key': 'my_key',
"data": {
"uuid": "myUUID",
"timeStamp": "2018-09-12T06:17:48+00:00",
"updateVals": x
}
}
循环与迭代器一起使用:
for
输出:
public static void removeTwos(List<String> stringList)
{
for (Iterator<String> itr = stringList.iterator(); itr.hasNext();)
if (itr.next().length() == 2) itr.remove();
}
public static void main(String[] args)
{
String[] arr = { "hi", "what", "who", "ok" };
List<String> list = new ArrayList<>(Arrays.asList(arr));
removeTwos(list);
System.out.println(list);
}
答案 5 :(得分:0)
public static String removeTwos(List<String> stringList){
return stringList.stream()
.filter(p -> p.length() != 2)
.collect(Collectors.joining(", "));
}
返回:
什么,谁