如何检查我的列表是否已包含某个字符串。Java Android SDK
我有一份清单:如何检查我的列表是否已包含某个字符串。Java Android SDK,java,android,list,Java,Android,List,我有一份清单: List<String> oldfavs = new ArrayList<String>(); 在哪里 我希望能够检查我要添加的字符串是否已经在列表中,如果它在我不想添加的列表中: 以下是我目前拥有的: public void SaveInsult(View view) { String saved = insult.getText().toString(); if (oldfavs.contains(saved)) {
List<String> oldfavs = new ArrayList<String>();
在哪里
我希望能够检查我要添加的字符串是否已经在列表中,如果它在我不想添加的列表中:
以下是我目前拥有的:
public void SaveInsult(View view) {
String saved = insult.getText().toString();
if (oldfavs.contains(saved)) {
Toast.makeText(getApplicationContext(), R.string.alreadyinfavs, Toast.LENGTH_SHORT).show();
}
else {
int listSize = oldfavs.size();
for (int i = 0; i < listSize; ++i)
oldfavs.add(saved);
Toast.makeText(getApplicationContext(), R.string.addedfavs, Toast.LENGTH_SHORT).show();
}
}
public void保存(视图){
保存的字符串=侮辱.getText().toString();
如果(旧版本包含(已保存)){
Toast.makeText(getApplicationContext(),R.string.alreadyinfavs,Toast.LENGTH_SHORT).show();
}
否则{
int listSize=oldfavs.size();
对于(int i=0;i
然而,此时字符串总是被添加,即使该字符串已经在列表中,我也无法找出出错的原因或位置 使用
集合
而不是列表
,因为集合不包含重复项,所以您不需要执行任何重复项检查:
List<String> oldfavsList = new ArrayList<String>(); // Allows duplicates when added
Set<String> oldfavsSet = new HashSet<String>(); // Duplicates are ignored when added
List oldfavsList=new ArrayList();//添加时允许重复
Set oldfavset=新HashSet();//添加时将忽略重复项
使用集合
而不是列表
,因为集合不包含重复项,所以您不需要执行任何重复项检查:
List<String> oldfavsList = new ArrayList<String>(); // Allows duplicates when added
Set<String> oldfavsSet = new HashSet<String>(); // Duplicates are ignored when added
List oldfavsList=new ArrayList();//添加时允许重复
Set oldfavset=新HashSet();//添加时将忽略重复项
使用集合
而不是列表
,因为集合不包含重复项,所以您不需要执行任何重复项检查:
List<String> oldfavsList = new ArrayList<String>(); // Allows duplicates when added
Set<String> oldfavsSet = new HashSet<String>(); // Duplicates are ignored when added
List oldfavsList=new ArrayList();//添加时允许重复
Set oldfavset=新HashSet();//添加时将忽略重复项
使用集合
而不是列表
,因为集合不包含重复项,所以您不需要执行任何重复项检查:
List<String> oldfavsList = new ArrayList<String>(); // Allows duplicates when added
Set<String> oldfavsSet = new HashSet<String>(); // Duplicates are ignored when added
List oldfavsList=new ArrayList();//添加时允许重复
Set oldfavset=新HashSet();//添加时将忽略重复项
假设侮辱
和oldfavs
有效,并且您只想在字符串不在列表中时添加该字符串,并且…执行Toast.makeText(…)
所做的任何操作。如果字符串不在列表中,则以下修改应解决您的问题
public void SaveInsult(View view) {
String saved = insult.getText().toString();
if (oldfavs.contains(saved)) {
Toast.makeText(getApplicationContext(), R.string.alreadyinfavs, Toast.LENGTH_SHORT).show();
}else {
oldfavs.add(saved);
Toast.makeText(getApplicationContext(), R.string.addedfavs, Toast.LENGTH_SHORT).show();
}
}
假设
侮辱
和oldfavs
是有效的,并且您只想在字符串不在列表中时添加该字符串,并且…执行Toast.makeText(…)
执行的任何操作,如果字符串不在列表中,则以下修改应该可以解决您的问题
public void SaveInsult(View view) {
String saved = insult.getText().toString();
if (oldfavs.contains(saved)) {
Toast.makeText(getApplicationContext(), R.string.alreadyinfavs, Toast.LENGTH_SHORT).show();
}else {
oldfavs.add(saved);
Toast.makeText(getApplicationContext(), R.string.addedfavs, Toast.LENGTH_SHORT).show();
}
}
假设
侮辱
和oldfavs
是有效的,并且您只想在字符串不在列表中时添加该字符串,并且…执行Toast.makeText(…)
执行的任何操作,如果字符串不在列表中,则以下修改应该可以解决您的问题
public void SaveInsult(View view) {
String saved = insult.getText().toString();
if (oldfavs.contains(saved)) {
Toast.makeText(getApplicationContext(), R.string.alreadyinfavs, Toast.LENGTH_SHORT).show();
}else {
oldfavs.add(saved);
Toast.makeText(getApplicationContext(), R.string.addedfavs, Toast.LENGTH_SHORT).show();
}
}
假设
侮辱
和oldfavs
是有效的,并且您只想在字符串不在列表中时添加该字符串,并且…执行Toast.makeText(…)
执行的任何操作,如果字符串不在列表中,则以下修改应该可以解决您的问题
public void SaveInsult(View view) {
String saved = insult.getText().toString();
if (oldfavs.contains(saved)) {
Toast.makeText(getApplicationContext(), R.string.alreadyinfavs, Toast.LENGTH_SHORT).show();
}else {
oldfavs.add(saved);
Toast.makeText(getApplicationContext(), R.string.addedfavs, Toast.LENGTH_SHORT).show();
}
}
据我所知,contains()将检查传递的对象实例是否已在数组中
问题是您正在创建一个新的字符串实例,因此它与数组中存储的字符串不匹配
如果我错了,请有人纠正我
解决方案:
您可以创建for循环并使用String.compareTo()查找匹配的字符串
示例代码:
for(int c=0;c<oldfavs.size();c++)
{
if(oldfavs.get(c).compareTo(saved)==0)
{
Toast.makeText(getApplicationContext(), R.string.alreadyinfavs, Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(getApplicationContext(), R.string.addedfavs, Toast.LENGTH_SHORT).show();
}
}
据我所知,contains()将检查传递的对象实例是否已经在数组中
问题是您正在创建一个新的字符串实例,因此它与数组中存储的字符串不匹配
如果我错了,请有人纠正我
解决方案:
您可以创建for循环并使用String.compareTo()查找匹配的字符串
示例代码:
for(int c=0;c<oldfavs.size();c++)
{
if(oldfavs.get(c).compareTo(saved)==0)
{
Toast.makeText(getApplicationContext(), R.string.alreadyinfavs, Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(getApplicationContext(), R.string.addedfavs, Toast.LENGTH_SHORT).show();
}
}
据我所知,contains()将检查传递的对象实例是否已经在数组中
问题是您正在创建一个新的字符串实例,因此它与数组中存储的字符串不匹配
如果我错了,请有人纠正我
解决方案:
您可以创建for循环并使用String.compareTo()查找匹配的字符串
示例代码:
for(int c=0;c<oldfavs.size();c++)
{
if(oldfavs.get(c).compareTo(saved)==0)
{
Toast.makeText(getApplicationContext(), R.string.alreadyinfavs, Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(getApplicationContext(), R.string.addedfavs, Toast.LENGTH_SHORT).show();
}
}
据我所知,contains()将检查传递的对象实例是否已经在数组中
问题是您正在创建一个新的字符串实例,因此它与数组中存储的字符串不匹配
如果我错了,请有人纠正我
解决方案:
您可以创建for循环并使用String.compareTo()查找匹配的字符串
示例代码:
for(int c=0;c<oldfavs.size();c++)
{
if(oldfavs.get(c).compareTo(saved)==0)
{
Toast.makeText(getApplicationContext(), R.string.alreadyinfavs, Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(getApplicationContext(), R.string.addedfavs, Toast.LENGTH_SHORT).show();
}
}
for(int c=0;c您可以编写自己的函数来检查列表是否包含特定字符串
请遵循以下代码:
public void SaveInsult(View view) {
String saved = insult.getText().toString();
if (hasString(oldfavs )) {
Toast.makeText(getApplicationContext(), R.string.alreadyinfavs, Toast.LENGTH_SHORT).show();
}
else {
int listSize = oldfavs.size();
for (int i = 0; i < listSize; ++i)
oldfavs.add(saved);
Toast.makeText(getApplicationContext(), R.string.addedfavs, Toast.LENGTH_SHORT).show();
}}
public void保存(视图){
保存的字符串=侮辱.getText().toString();
if(hastring(oldfavs)){
Toast.makeText(getApplicationContext(),R.string.alreadyinfavs,Toast.LENGTH_SHORT).show();
}
否则{
int listSize=oldfavs.size();
对于(int i=0;i
功能:
public boolean hasString(List<String> list){
boolean isPresent = false;
for (int i=0; i<list.size(); i++){
if(list.get(i).equals("Your String")){
isPresent = true;
}
}
return isPresent;
}
public boolean hastring(列表){
布尔值isPresent=false;
对于(inti=0;i,您可以编写自己的函数来检查列表是否包含特定字符串
请遵循以下代码:
public void SaveInsult(View view) {
String saved = insult.getText().toString();
if (hasString(oldfavs )) {
Toast.makeText(getApplicationContext(), R.string.alreadyinfavs, Toast.LENGTH_SHORT).show();
}
else {
int listSize = oldfavs.size();
for (int i = 0; i < listSize; ++i)
oldfavs.add(saved);
Toast.makeText(getApplicationContext(), R.string.addedfavs, Toast.LENGTH_SHORT).show();
}}
public void保存(视图){
保存的字符串=侮辱.getText().toString();
if(hastring(oldfavs)){
Toast.makeText(getApplicationContext(),R.string.alreadyinfavs,Toast.LENGTH\u SHORT)。显示(