我来自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我想在构造函数中初始化它的大小,因为在编辑元素或添加或删除之前可能会查询该大小.
以这种方式通过对象数组初始化列表是很常见的:
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)
可能是它违反了一些原则,线程安全或其他什么?
我想扩展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) 从内存或处理器成本的角度来看,数组和arrayList对象之间是否存在显着差异?
我是一名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#中是否有另一个选项支持使用索引访问对象,插入和删除某些索引?
我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)
有可能吗?
我们如何从两个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)
有人可以帮帮我吗?
我在循环中面对这种不需要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例外.这有什么简单的解决方法吗?
如何维护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)
理想情况下,我希望我的输出仅打印上述组合之一。
我一直在尝试获取列表的子列表,将其反转,然后将反转的列表放回起始位置。例如,假设我们拥有列表[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);。
我不确定是什么问题,因为迭代过程中似乎没有任何变化。如果有人能解释为什么会这样和/或如何解决它,将不胜感激。