当前位置:  开发笔记 > 编程语言 > 正文

循环线程arraylist

如何解决《循环线程arraylist》经验,为你挑选了1个好方法。

我在String数组上有一个简单的循环,然后将String传递给threadlist方法.但是我似乎无法打印出两个String.它只打印第二个名称"Fred",这让我觉得我用第二个String覆盖了第一个String.我怎样才能ArrayList包括字符串"Tim""Fred"

import java.util.ArrayList;

public class Threads extends Thread implements Runnable{

    private ArrayList threadList;
    private String e;

    public static void main(String[] args) {
        String[] elements = {"Tim","Fred"};    
        Threads t = new Threads();
        for (String e: elements) {           
            t.threadL(e); 
        }
        //loop over the elements of the String array and on each loop pass the String to threadL

        for (int index = 0;index threadL(String e) {
        threadList = new ArrayList<>();
        threadList.add(e);
        return(threadList);
    }
}

Tunaki.. 5

您的问题的直接解决方案是threadList每次threadL调用方法时都要实例化变量.因此,在第二次调用时,忽略之前存储的内容并添加新内容:

public ArrayList threadL(String e) {
    threadList = new ArrayList<>(); // <-- instantiates a new list each time it is called
    threadList.add(e);
    return threadList;
}

您应该只将该列表实例化一次,例如声明它的位置.此外,你绝对不应该使用原始类型,List但始终使用键入的版本:

private List threadList = new ArrayList<>();

请注意,在给定的示例中,您实际上没有使用任何ThreadRunnable功能(因为您没有覆盖run()或启动线程).此外,更喜欢实施Runnable过度扩展Thread.



1> Tunaki..:

您的问题的直接解决方案是threadList每次threadL调用方法时都要实例化变量.因此,在第二次调用时,忽略之前存储的内容并添加新内容:

public ArrayList threadL(String e) {
    threadList = new ArrayList<>(); // <-- instantiates a new list each time it is called
    threadList.add(e);
    return threadList;
}

您应该只将该列表实例化一次,例如声明它的位置.此外,你绝对不应该使用原始类型,List但始终使用键入的版本:

private List threadList = new ArrayList<>();

请注意,在给定的示例中,您实际上没有使用任何ThreadRunnable功能(因为您没有覆盖run()或启动线程).此外,更喜欢实施Runnable过度扩展Thread.

推荐阅读
勤奋的瞌睡猪_715
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有