相关疑难解决方法(0)

如何复制Java Collections列表

我有一个ArrayList,我想完全复制它.我假设有人花了一些时间使其正确,我尽可能使用实用程序类.很自然地,我最终得到了Collections一个包含复制方法的类.

假设我有以下内容:

List<String> a = new ArrayList<String>();
a.add("a");
a.add("b");
a.add("c");
List<String> b = new ArrayList<String>(a.size());

Collections.copy(b,a);
Run Code Online (Sandbox Code Playgroud)

这失败了,因为基本上它认为b不够大a.是的,我知道b它的大小为0,但它现在应该足够大,不应该吗?如果我必须先填补b,那么Collections.copy()在我的脑海中就会成为一个完全没用的功能.所以,除了编写一个复制函数(我现在要做的)之外,还有一种正确的方法吗?

java collections copy list

138
推荐指数
9
解决办法
23万
查看次数

更新另一个时 Java 列表已更改

假设我们有:

public class Test {

    private List<String> mWorkList;
    private List<String> mOriginalList;

    public Test(List<String> list) {
        mWorkList = list;
        mOriginalList = list;
    }

    public void updateData(List<String> newList) {
        mWorkList.clear();
        mWorkList.addAll(newList);
    }
}
Run Code Online (Sandbox Code Playgroud)

我只想要改变mWorkList,但mOriginalList在变过,当我打电话updateData(List<String>)。那么我应该如何做才能保持mOriginalList在构造函数中最初分配的状态?

java

3
推荐指数
1
解决办法
1980
查看次数

如何对List的每个元素执行操作并返回结果(当然不影响原始元素)?

如何在Java中编写一个静态方法,它将获取List,对每个元素执行操作并返回结果(当然不会影响原始文件)?

例如,如果我想在每个元素中添加2,那么... 具体的返回类型必须相同,例如,如果我的List是一个值为1,2,3的LinkedList,我应该返回一个值为3,4,5的LinkedList.类似地,对于ArrayList,Vector,Stack等,它们都是列表.

我可以看到如何使用多个if (lst instanceof LinkedList) ...等...更好的方法吗?

import java.util.List;

public class ListAdd {       

    static List<Integer> add2 (List<Integer> lst) {

    ...

        return result;
    }
}
Run Code Online (Sandbox Code Playgroud)

java generics list

2
推荐指数
1
解决办法
1723
查看次数

Java 不安全或未经检查的表达式:克隆数组列表

我在编译时遇到未经检查的表达式错误,发现有问题的行是

ArrayList<Integer> items = (ArrayList<Integer>) this.items.clone();
Run Code Online (Sandbox Code Playgroud)

我正在尝试执行对象的深层复制,因此我以上述方式克隆对象和数组列表的属性。我该如何解决这个警告?

  • 我可以使用@SuppressWarnings("unchecked"),但这只是隐藏了问题(尽管我期望没有)
  • 如果我通过循环遍历所有元素来手动克隆,我认为它会更慢

这样做的正确方法是什么?

java compiler-errors type-safety

1
推荐指数
1
解决办法
2844
查看次数

标签 统计

java ×4

list ×2

collections ×1

compiler-errors ×1

copy ×1

generics ×1

type-safety ×1