Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ArrayList中项目的复制_Java_Android - Fatal编程技术网

Java ArrayList中项目的复制

Java ArrayList中项目的复制,java,android,Java,Android,我正在ArrayList中存储标识地址。问题是我重复存储它 以下是相关代码: public void storeIDs(final String emailAddress) { SharedPreferences.Editor editor = context.getSharedPreferences("storeIds", MODE_PRIVATE).edit(); IDAddresses.add(emailAddress); for(int i=0;i<IDA

我正在ArrayList中存储标识地址。问题是我重复存储它

以下是相关代码:

public void storeIDs(final String emailAddress) {
    SharedPreferences.Editor editor = context.getSharedPreferences("storeIds", MODE_PRIVATE).edit();
    IDAddresses.add(emailAddress);

    for(int i=0;i<IDAddresses.size();i++)
    {
        editor.putString("value"+i,IDAddresses.get(i));
    }
    editor.putInt("emailListSize",IDAddresses.size());
    editor.apply();
}
publicsvoidstoreid(最终字符串emailAddress){
SharedReferences.Editor=context.getSharedReferences(“storeId”,MODE_PRIVATE).edit();
IDAddresss.add(电子邮件地址);

对于(int i=0;i,根据您的描述,
Set
是您应该选择的数据结构

  • Set将存储重复的(equals())元素,因此不必检查和添加
  • 如果需要检查集合中是否存在元素,请使用基于
    集的
    哈希表
     (例如,
    HashSet
    contains()O(1)
    将比
    ArrayList.contains()O(n)

正如@Kent所建议的那样,您应该为此使用a

不包含重复元素的集合。更正式地说,集合不包含e1和e2元素对,例如e1.equals(e2),最多包含一个空元素

另一种方法不推荐,但如果您要使用
ArrayList

List<String> noDupes = Lists.newArrayList(Sets.newHashSet(IDAddresses));

只需使用ArrayList.contains(desiredElement)。例如,如果您正在从示例中查找conta1帐户,则可以使用以下内容:

 if (IDAddresses.contains(i)) {
    System.out.println("Account found");
} else {
    System.out.println("Account not found");
}
我没有尝试此方法。必须使用此方法ArrayList.contains(desiredElement)来检查ArrayList中是否存在值


请浏览此链接

为什么不使用
集合
?在for循环中使用此if条件。
Set<String> IDAddresses = new HashSet<>();
IDAddresses.add(emailAddress);
List<String> noDupes = Lists.newArrayList(Sets.newHashSet(IDAddresses));
List<String> noDupes= IDAddresses.stream().distinct().collect(Collectors.toList());
 if (IDAddresses.contains(i)) {
    System.out.println("Account found");
} else {
    System.out.println("Account not found");
}