带有 ArrayList 的 Java for 循环
Posted
技术标签:
【中文标题】带有 ArrayList 的 Java for 循环【英文标题】:Java for loop with an ArrayList 【发布时间】:2012-10-09 20:17:56 【问题描述】:这是我的 ArrayList contain
的内容
HPDH-1,001, Check-out date: 7/7/7
JTI-1,001, Check-out date: 7/7/7
我的代码:
for (int i = 0; i < contain.size(); i++)
if (contain.get(i).contains(code))
System.out.println(contain.get(i));
问题是我的变量代码是字符串“JTI-1” 为什么它不给我 JTI-1 输出? 我试图让它显示变量代码的值。 我想删除 contains.get(i) 如果它只给我我输入的那个。
【问题讨论】:
"为什么它不只给我 JTI-1 输出?" 这里的问题是什么?它显示了你不期待的什么? 请包含代码的输出,同时确保您已将 ArrayList 的泛型类型指定为contains
方法中使用之前尝试code.trim()
。
公平竞争 AmitD 的神奇能力是猜测您在问题中输入的字符串中有一个空格...您的 code
字符串显然不是您所说的 "JTI-1"
,因为 @987654328 @ 解决了你的问题。
【参考方案1】:
我认为基本上代码是正确的。我会检查您的输入并确保它们与您的想法相符。
我可能会将你的循环重写为:
for (String s : contain)
if (s.contains(code))
// found it
使用对象迭代器(以上假设您有一个ArrayList<String>
)。也许重命名contain
。不是很清楚这是什么。
【讨论】:
【参考方案2】:假设字符串列表,代码是正确的。 I have not modified any of your source code just to give you idea that it works fine.
List<String> contain = new ArrayList<String>();
contain.add("HPDH-1,001, Check-out date: 7/7/7");
contain.add("JTI-1,001, Check-out date: 7/7/7");
String code = "JTI-1 ";
for (int i = 0; i < contain.size(); i++)
if (contain.get(i).contains(code.trim())) <---Use trim it is possible that code may have extra space
System.out.println(contain.get(i));
【讨论】:
我是否会像这样在每次迭代中再次调用 'contain.size()'? Arraylist size() 函数只返回整数值,因此不会产生任何影响。在上面的答案中,正如我所提到的,我不想重构代码。【参考方案3】:您的代码是正确的,但我也建议您使用迭代器:
import java.util.ArrayList;
import java.util.Arrays;
public class Main
public static void main(String[] args) throws Exception
ArrayList<String> contain = new ArrayList<String>(Arrays.asList("HPDH-1,001, Check-out date: 7/7/7",
"JTI-1,001, Check-out date: 7/7/7"));
String code = "JTI";
// your loop
for (int i = 0; i < contain.size(); i++)
if (contain.get(i).contains(code))
System.out.println(contain.get(i));
// my suggestion
for (String s : contain)
if (s.contains(code))
System.out.println(s);
输出:
JTI-1,001,退房日期:7/7/7
JTI-1,001,退房日期:7/7/7
如果此输出不是您想要的,请添加更多信息。
【讨论】:
【参考方案4】:System.out.println("Find name");
String str = s.nextLine();
List<Integer> result = new ArrayList<Integer>();
for (int i = 0; i < surname.size(); i++)
if(surname.get(i).equals(str))
result.add(i);
for (Integer integer : result)
System.out.println(integer);
【讨论】:
以上是关于带有 ArrayList 的 Java for 循环的主要内容,如果未能解决你的问题,请参考以下文章
Java集合 -- ListSetMap三者的区别Arraylist 与 LinkedList 区别RandomAccess接口双向链表和双向循环链表ArrayList 与 Vector