标签: arraylist

如何调整ArrayList的大小

我来自C++背景,我希望有一个矩阵

ArrayList<arrayList<E>> javamatrix 
Run Code Online (Sandbox Code Playgroud)

在C++中我会这样做

std::vector<std::vector<T> > cppmatrix;
std::vector<T>vcol(cols);
cppmatrix.resize(rows,vcol);
Run Code Online (Sandbox Code Playgroud)

我似乎无法为此任务找到内置resize()函数ArrayLists,所以我应该使用另一个集合吗?除了使用for循环外,没办法做到这一点javamatrix.add()吗?


PS我想在构造函数中初始化它的大小,因为在编辑元素或添加或删除之前可能会查询该大小.

java arraylist matrix

16
推荐指数
2
解决办法
4万
查看次数

为什么没有ArrayList(T [] t)构造函数?

以这种方式通过对象数组初始化列表是很常见的:

Foo[] objs = ...;
ArrayList<Foo> list = new ArrayList<Foo>(Arrays.asList(objs));
Run Code Online (Sandbox Code Playgroud)

我想知道,有没有理由为什么ArrayList的desiner没有包含带数组作为参数的构造函数,所以它可以像这样初始化:

ArrayList<Foo> list = new ArrayList<Foo>(objs);
Run Code Online (Sandbox Code Playgroud)

可能是它违反了一些原则,线程安全或其他什么?

java collections arraylist

16
推荐指数
2
解决办法
6391
查看次数

扩展java ArrayList

我想扩展ArrayList,为特定类添加一些方法,其实例将由扩展ArrayList保存.下面是简化的说明性代码示例.

这对我来说似乎很明智,但我对Java很新,我看到其他一些不鼓励扩展ArrayList的问题,例如Extending ArrayList和Creating new methods.我不太了解Java以了解异议.

在我之前的尝试中,我最终在ThingContainer中创建了一些基本上是传递给ArrayList的方法,因此扩展看起来更容易.

有没有更好的方法来做我想做的事情?如果是这样,应该如何实施?

import java.util.*;

class Thing {
    public String name;
    public int amt;

    public Thing(String name, int amt) {
        this.name = name;
        this.amt = amt;
    }

    public String toString() {
        return String.format("%s: %d", name, amt);
    }

    public int getAmt() {
        return amt;
    }
}

class ThingContainer extends ArrayList<Thing> {
    public void report() {
        for(int i=0; i < size(); i++) {
            System.out.println(get(i));
        }
    }

    public int total() {
        int tot = 0;
        for(int i=0; …
Run Code Online (Sandbox Code Playgroud)

java arraylist extend

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

Array与Array List有显着差异?

可能重复:
何时在c#中使用ArrayList而不是array []?

从内存或处理器成本的角度来看,数组和arrayList对象之间是否存在显着差异?

c# arrays arraylist

16
推荐指数
1
解决办法
6万
查看次数

C#等价于java arraylist支持get,set和remove某些Index

我是一名Java程序员,之前我使用过Java ArrayList,现在我想在C#中使用类似的东西.我需要的一些选项在这个Java代码中:

String[] strs = new String[]{"str1" , "str2" , "str3" , "str4"};
ArrayList arrayList = new ArrayList(35);
arrayList.add(strs[0]);
arrayList.add(strs[1]);
arrayList.remove(0);
arrayList.set(0, strs[2]);
String s = (String) arrayList.get(1);
Run Code Online (Sandbox Code Playgroud)

我用C#ArrayList和LinkedList,但他们没有,我需要这些简单的选项.C#中是否有另一个选项支持使用索引访问对象,插入和删除某些索引?

c# java collections linked-list arraylist

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

在Java中将数据从HashSet移动到ArrayList

我Set在Java中有以下内容:

Set< Set<String> > SetTemp = new HashSet< Set<String> >();
Run Code Online (Sandbox Code Playgroud)

我想将其数据移动到ArrayList:

ArrayList< ArrayList< String > > List = new ArrayList< ArrayList< String > >);
Run Code Online (Sandbox Code Playgroud)

有可能吗?

java list arraylist hashset data-structures

16
推荐指数
2
解决办法
3万
查看次数

如何从两个数组列表中删除常用值

我们如何从两个ArrayList中删除常用值.让我们考虑我有两个Arraylist,如下所示

ArrayList1= [1,2,3,4]
ArrayList1= [2,3,4,6,7]
Run Code Online (Sandbox Code Playgroud)

我希望得到结果

ArrayListFinal= [1,6,7]
Run Code Online (Sandbox Code Playgroud)

有人可以帮帮我吗?

java collections list arraylist

16
推荐指数
2
解决办法
4万
查看次数

从ArrayList中删除字符

我在循环中面对这种不需要char的int转换.说我有这个字符列表,我想删除其中一个:

List<Character> chars = new ArrayList<>();
chars.add('a');
chars.add('b');
chars.add('c');
chars.remove('a');  // or chars.remove('a'-'0');
Run Code Online (Sandbox Code Playgroud)

所以'a'被解释为它的int价值,我得到了一个IndexOutOfBoundsException例外.这有什么简单的解决方法吗?

java list arraylist char

16
推荐指数
3
解决办法
7503
查看次数

在Java中维护唯一数组的ArrayList

如何维护ArrayList唯一数组?

例如,如果我有以下数组:

int [] a = {1,2,3};
int [] b = {2,1,3};
int [] c = {2,1,3};
Run Code Online (Sandbox Code Playgroud)

根据我的逻辑,我正在考虑独特的组合。因此,在上述情况下a = b = c,因为它们都含有"1","2","3"。

理想情况下,我想知道Java中是否有可以识别这一点的数据结构。

我尝试了以下方法:

Set<int []> result = new LinkedHashSet<>();
int [] x = {1,2,3};
int [] z = {2,1,3};
int [] m = {2,1,3};

result.add(x);
result.add(z);
result.add(m);

for(int [] arr: result){
    printArray(arr);
}
Run Code Online (Sandbox Code Playgroud)

我的输出是:

1 2 3
2 1 3
2 1 3
Run Code Online (Sandbox Code Playgroud)

理想情况下,我希望我的输出仅打印上述组合之一。

java arraylist

16
推荐指数
2
解决办法
309
查看次数

为什么列表的反向子列表的List.addAll导致ConcurrentModificationException

我一直在尝试获取列表的子列表,将其反转,然后将反转的列表放回起始位置。例如,假设我们拥有列表[1, 2, 3, 4, 5, 6],然后从索引2反转到索引4将得到[1, 2, 5, 4, 3, 6]。

我为此编写了一些代码,但是ConcurrentModificationException每次都给出一个代码(除非startIndex == endIndex)。下面提供了一个最小的可重现示例:

int startIndex = 2;
int endIndex = 4;
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
list.add(6);

List<Integer> toReverse = list.subList(startIndex, endIndex+1);
Collections.reverse(toReverse);
list.removeAll(toReverse);
list.addAll(startIndex, toReverse);
Run Code Online (Sandbox Code Playgroud)

异常线程“main” java.util.ConcurrentModificationException
在java.util.ArrayList中的$ SubList.checkForComodification(来源不明)
在java.util.ArrayList的$ SubList.size(来源不明)在
java.util.AbstractCollection.toArray(来源不明)在 test.ConcurrentExample.main(ConcurrentExample.java:64)处
java.util.ArrayList.addAll(Unknown Source
)

错误所指的实际行是list.addAll(startIndex, toReverse);。

我不确定是什么问题,因为迭代过程中似乎没有任何变化。如果有人能解释为什么会这样和/或如何解决它,将不胜感激。

java collections arraylist concurrentmodification

16
推荐指数
2
解决办法
145
查看次数