Java 如果元素等于数组列表中的下一个索引,如何编写一个for循环来跳过这些元素?

Java 如果元素等于数组列表中的下一个索引,如何编写一个for循环来跳过这些元素?,java,android,arrays,arraylist,Java,Android,Arrays,Arraylist,我有一个数组列表,其中包含从用户那里收集的喜欢的东西的列表。例如,大气、开阔、宽敞等 现在,我从firestore数据库中获取这些值,并将它们保存在arrayList中。如果不止一个用户说他们喜欢这里的氛围,我希望在我的应用程序的评论页面上显示他们喜欢的不同内容,而不是一遍又一遍地显示相同的内容 如何编写一个for循环,该循环将跳过相等的元素,并使用彼此不相等的值初始化我的TextView 我使第一个TextView和第二个TextView都是唯一的,但是如何使第三个TextView也成为Arr

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

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

如何编写一个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();
      }
}      
private ArrayList allLikes;

对于(int i=0;i您可以使用此模式:

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;
}
private ArrayList allLikes=null;
//填写你的清单
Set Set=新哈希集(allLikes);
int i=0;
for(Iterator it=set.Iterator();it.hasNext();){
字符串s=it.next();
i++;
如果(i==1)
textView1.setText;
else如果(i==2)
textView2.setText;
else如果(i==3)
textView3.setText;
其他的
打破
}

当您将
列表
转换为
集合
时,将删除所有类似的条目。

您可以使用以下模式:

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;
}
private ArrayList allLikes=null;
//填写你的清单
Set Set=新哈希集(allLikes);
int i=0;
for(Iterator it=set.Iterator();it.hasNext();){
字符串s=it.next();
i++;
如果(i==1)
textView1.setText;
else如果(i==2)
textView2.setText;
else如果(i==3)
textView3.setText;
其他的
打破
}


当您将
列表
转换为
集合
时,所有类似的条目都会被删除。

该行有什么错误?@TheLegend42 java.lang.IndexOutofBounds异常:索引:12,大小:12
allLikes
中的
字符串是什么?它是喜欢某个特定事物的所有用户的列表,还是一个类似的列表由特定用户创建的?无论哪种方式,似乎您只是想删除重复项,因此
newlinkedhashset(allLikes)
将按照“like”首次出现的顺序返回一组不同的“like”(用户或事物,以列表中包含的为准)。或者,如果您想要“like”,请使用
TreeSet
按字典顺序排序。当然,您会得到
IndexOutOfBoundsException
,因为您正在迭代所有值,所以当您选中“下一步”时最后一个值的值,没有这样的东西。你需要决定这意味着什么,然后对它进行编码。只需在
for
循环之前获取一个新的列表,从列表中删除重复项:该行的错误是什么?@TheLegend42 java.lang.IndexOutofBoundException:索引:12,大小:12
中的
字符串是什么?它是一个喜欢某个特定事物的所有用户的列表,还是一个特定用户喜欢的事物的列表?无论哪种方式,似乎您只是想删除重复项,因此
new LinkedHashSet(allLikes)
将按“喜欢”的时间顺序返回一组不同的“喜欢”(用户或事物,以列表中包含的为准)是第一次看到的。或者,如果希望“likes”按字典顺序排序,请使用
树集
。当然,您会得到
IndexOutOfBoundsException
,因为您正在迭代所有值,所以当您选中“next”时最后一个值的值,没有这样的事情。你需要决定这意味着什么,然后对它进行编码。只需在
for
循环之前获取一个新列表,从列表中删除重复项:我有3个,如上文在quesetion@sajjadSo中所述。你想做什么?在
文本视图中设置列表的前3个值s?这个方法对我不起作用。它为所有三个文本视图提供了完全相同的字符串。有没有办法使用for循环来实现这一点?从数组列表中设置3个彼此不相等的值@sajjadedite我的答案。根据你所说的,这应该可以完成工作。我有3个,正如上面在问题@sajjadSo中提到的,你认为呢在
TextView
s中设置列表的前3个值?这种方法对我不起作用。它为所有三个文本视图提供完全相同的字符串。有没有办法使用for循环来实现这一点?从数组列表中设置3个彼此不相等的值@sajjadedite我的答案。根据你所说的,这应该是我会做这项工作。