我在String数组上有一个简单的循环,然后将String传递给threadlist方法。但是,我似乎无法打印出两个字符串。它只打印第二个名称SELECT m.first, m.second
FROM m.member INNER JOIN f.friendships
ON f.id = m.id;
,这让我觉得我用第二个String覆盖了第一个String。如何让"Fred"
同时包含字符串ArrayList
和"Tim"
?
"Fred"
答案 0 :(得分:5)
您的问题的直接解决方案是每次调用方法threadList
时都要实例化threadL
变量。因此,在第二次调用时,忽略之前存储的内容并添加新内容:
public ArrayList<String> threadL(String e) {
threadList = new ArrayList<>(); // <-- instantiates a new list each time it is called
threadList.add(e);
return threadList;
}
您应该只将该列表实例化一次,例如声明它的位置。此外,您绝对不应该使用List
等原始类型,但始终使用键入的版本:
private List<String> threadList = new ArrayList<>();
请注意,在给定的示例中,您实际上没有使用任何Thread
或Runnable
功能(因为您没有覆盖run()
或启动线程)。另外,prefer implementing Runnable
over extending Thread
。
答案 1 :(得分:0)
每次循环时都要实例化一个新的数组列表。这就是为什么你看不到元素[0]的原因,因为它被新的列表取代了。