有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何编写一个for循环,在元素等于数组列表中的下一个索引时跳过元素?

我有一个数组列表,其中包含从用户那里收集的喜欢的东西的列表。例如,大气、开阔、宽敞等

现在,我从firestore数据库获取这些值,并将它们保存在arrayList<String>中。如果不止一个用户说他们喜欢这里的氛围,我希望在我的应用程序的评论页面上显示他们喜欢的不同内容,而不是一遍又一遍地显示相同的内容

如何编写一个for循环,该循环将跳过相等的元素,并使用彼此不相等的值初始化我的TextView

我使第一个TextView和第二个TextView都是唯一的,但是如何使第三个TextView也成为ArrayList中唯一的值呢

以下是我到目前为止所做的:

private ArrayList<String> allLikes;
for(int i = 0; i<allLikes.size()-1; i++){
     if(allLikes.get(i) != allLikes.get(i+1)){
        liked1.setText(allLikes.get(i));
        liked2.setText(allLikes.get(i+1));
        // liked3.setText(allLikes.get(i+2)); //this line is causing an error.
        Toast.makeText(DetailsActivity.this, "NOT EQUAL", Toast.LENGTH_SHORT).show();
      }else{
        liked1.setText(allLikes.get(0));
        Toast.makeText(DetailsActivity.this, "EQUAL", Toast.LENGTH_SHORT).show();
      }
}      

共 (1) 个答案

  1. # 1 楼答案

    您可以使用以下模式:

    private ArrayList<String> allLikes = null;
    //fill your list
    Set<String> set = new HashSet<>(allLikes);
    int i=0;
    for (Iterator<String> it = set.iterator(); it.hasNext(); ) {
        String s= it.next();
        i++;
        if (i==1)
            textView1.setText(s);
        else if (i==2)
            textView2.setText(s);
        else if (i==3)
            textView3.setText(s);
        else
            break;
    }
    

    List转换为Set时,将删除所有类似的条目