如何分离数组列表项中的单词?

时间:2017-05-26 16:57:47

标签: java android

我有两个项目的数组列表,每个项目有3个单词:用户名,分数和高分(例如:ryan 120 medium)。我希望能够从数组列表项中拆分这些单词,并将每个单词显示在android studio中的文本视图中。我该怎么做呢我已经写了一些代码,但我不知道该去哪里?我知道它与for循环有关。我使用计数来表示从数组列表项中拆分的单独单词。

public void setHighScore() {
    List<String> lines = new ArrayList<>();
    lines.add("ryan 150 medium");
    lines.add("andrew 200 medium")
    int count = 0;
    int count2 = 0;
    while(count < lines.size()) {
        for() {
            if(count2 == 0) {
                count2++;
            }
            else if(count2 == 1) {
                count2++;
            }
            else if(count2 == 2) {
                count2++;
            }
        }
    }
}

4 个答案:

答案 0 :(得分:4)

使用Split();

示例:

lines.add("ryan 150 medium");
lines.add("andrew 200 medium")

String[] words = lines.get(0).split(" ");
words[0] // ryan
words[1] // 150
words[2] // medium

String[] words2 = lines.get(1).split(" ");
words2[0] // andrew
words2[1] // 200
words2[2] // medium



TextView viewsName = (TextView)findViewById(R.id.name);
viewsName.setText(words[0]); // ryan

TextView viewsScore = (TextView)findViewById(R.id.score);
viewsScore.setText(words[1]); // 150

TextView viewsLevel = (TextView)findViewById(R.id.level);
viewsLevel.setText(words[2]); // medium

答案 1 :(得分:0)

您可以使用List的foreach循环,然后执行您需要的任何操作。

public void setHighScore(){

    List<String> lines = new ArrayList<>();
    lines.add("ryan 150 medium");
    lines.add("andrew 200 medium");
    lines.forEach(line -> {
        String[] temp = line.split(" ");
        // Whatever you want to do for the line.
    });
}

答案 2 :(得分:0)

public void setHighScore() {
    List<String[]> listStringArray = new ArrayList<>();
    List<String> lines = new ArrayList<>();
    lines.add("ryan 150 medium");
    lines.add("andrew 200 medium")
    for(int i = 0; i < lines.size(); i++){
        String[] words = lines.get(i).split(" ");
        listStringArray.add(words);
    }
}

您将获得String of String数组中的数据。

现在您可以将数据设置为视图,如下所示:

TextView textView = (TextView) findViewById(R.id.text);
textView.setText(listStringArray.get(i)[0]);

答案 3 :(得分:0)

解决此问题的更强大的 STANDARD JAVA方法是定义包含不同属性的class。然后使用它。

<强> Person.class

public class Person {

    String name, highscore;
    int points;

    public Person(String name, int points, String highscore) {
        this.name = name;
        this.points = points;
        this.highscore = highscore;
    }
    public String getName() {
        return name;
    }
    public int getPoints() {
        return points;
    }        
    public String getHighscore() {
        return highscore;
    }    
}

现在在列表中使用此类,如下所示:

List<Person> lines = new ArrayList<>();
lines.add(new Person("ryan", 150, "medium"));
lines.add(new Person("andrew", 200,"medium"));
//Accress them as follows:
lines.get(0).getName(); //this will return ryan
lines.get(1).getPoints(); //this will return 200