我必须找到一种最好的方法来找出第二个arraylist中没有出现的元素.假设
Arraylist a,b,
Arraylist a={1,2,3,4,5};
Arraylist b={2,3,4};
Run Code Online (Sandbox Code Playgroud)
所以基本上我要的是找出的元素一个是不存在的ArrayList b.
那么这样做的最佳解决方案是什么?
我看到Jon在初始化未知类型的通用对象时的回复:
但是,如果您希望单个集合包含多个不相关的值类型,则必须使用
List<object>
我不是比较ArrayListvs List<>,而是ArrayListvs List<object>,因为两者都将暴露类型的元素object.在这种情况下使用任何一个会有什么好处?
编辑:这里不关心类型安全,因为这两个类都是object作为它的项目暴露.仍然需要从object所需的类型转换.除了类型安全之外,我对其他任何事情都更感兴趣.
编辑:谢谢马克格拉维尔和肖恩的答案.对不起,我只能选1作为答案,所以我会投两票.
有没有办法压缩Powershell中的ArrayList的返回值(= Index)(使用System.Collections.ArrayList),还是应该使用另一个类?
$myArrayList = New-Object System.Collections.ArrayList($null)
$myArrayList.Add("test")
Output: 0
Run Code Online (Sandbox Code Playgroud)
在此先感谢米尔德
我正在尝试"组合"两个arrayLists,生成一个新的arrayList,其中包含两个组合arrayLists中的所有数字,但没有任何重复元素,它们应该按顺序排列.我在下面提出了这个代码.我经历过它,这对我来说很有意义,但我不确定我是否可以使用<或>来比较get(i)在arrayLists中.我将array1中的所有元素添加到plusArray中.然后我将通过plusArray并将其与array2进行比较,以查看arrayA的元素是否存在于plusArray中.如果他们这样做我什么都不做,但如果他们不这样做,那么我试图将它添加到正确的位置.也许我的嵌套for循环使用不正确?注意:ArrayLists由用户按递增顺序排序.
ArrayList<Integer> plusArray = new ArrayList<Integer>();
for(int i = 0; i < array1.size(); i++){
plusArray.add(array1.get(i));
}
for(int i = 0; i < plusArray.size(); i++){
for(int j = 0; j < array2.size(); j++){
if(array2.get(j) < plusArray.get(i)){
plusArray.add(i,array2.get(j));
}
else if(plusArray.get(i).equals(array2.get(j))){
;
}
else if(array2.get(j) > plusArray.get(i)){
plusArray.add(i, array2.get(j));
}
}
Run Code Online (Sandbox Code Playgroud)
更新:我不再得到下面的例外.相反,程序似乎永远运行.我更改了<和>条件中添加元素的位置.///这是我的数组列表得到的异常:IntSet 1:{1 2} IntSet 2:{1 3 4}
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Unknown Source)
at java.util.Arrays.copyOf(Unknown Source)
at java.util.ArrayList.grow(Unknown Source)
at java.util.ArrayList.ensureCapacityInternal(Unknown Source)
at java.util.ArrayList.add(Unknown Source)
at …Run Code Online (Sandbox Code Playgroud) 可能有一个简单的单行程,我在这里找不到,但这是我的问题:
如何检查ArrayList是否包含另一个ArrayList中的所有对象?我正在寻找(如果它存在)的东西:
//INCORRECT EXAMPLE:
if(one.contains(two))
{
return true;
}
else
{
return false;
}
Run Code Online (Sandbox Code Playgroud)
例如:
ArrayList one = {1, 2, 3, 4, 5}
ArrayList two = {1, 2, 3} --> True
ArrayList two = {} --> True
ArrayList two = {1, 2, 3, 4, 5} --> True
ArrayList two = {1, 5, 2} --> True
ArrayList two = {1, 7, 4} --> False
ArrayList two = {0, 1, 3} --> False
ArrayList two = {4, 5, 6} --> False
ArrayList …Run Code Online (Sandbox Code Playgroud) 标题说我List应该何时使用,何时使用ArrayList?
谢谢
问题发生在
Element element = it.next();
Run Code Online (Sandbox Code Playgroud)
并且包含该行的代码位于 OnTouchEvent
for (Iterator<Element> it = mElements.iterator(); it.hasNext();){
Element element = it.next();
if(touchX > element.mX && touchX < element.mX + element.mBitmap.getWidth() && touchY > element.mY
&& touchY < element.mY + element.mBitmap.getHeight()) {
//irrelevant stuff..
if(element.cFlag){
mElements.add(new Element("crack",getResources(), (int)touchX,(int)touchY));
element.cFlag = false;
}
}
}
Run Code Online (Sandbox Code Playgroud)
所有这一切都在里面synchronized(mElements),这里mElements是一个ArrayList<Element>
当我触摸它时Element,它可能会激活cFlag,这将创建另一个Element具有不同属性的属性,这些属性将从屏幕上掉落并在不到一秒的时间内自行消失.这是我创建粒子效果的方式.我们可以称之为"粒子" crack,就像构造函数中的String参数一样.
这一切都正常,直到我添加另一个主要Element.现在我同时Elements在屏幕上有两个,如果我触摸最新的Element,它工作正常,并启动粒子.
但是,如果我触摸并激活cFlag旧版本Element,那么它会给我一个例外.
07-28 15:36:59.815: ERROR/AndroidRuntime(4026): FATAL …Run Code Online (Sandbox Code Playgroud) 我想创建一个没有固定大小的mutli维数组.
我需要能够添加String[2]它的项目.
我试过看:
private ArrayList<String[]> action = new ArrayList<String[2]>();
Run Code Online (Sandbox Code Playgroud)
但这不起作用.有没有人有任何其他想法?
你能解释一下为什么会发生这种情况,我该如何解决呢?
所以我使用的是Oracle-ADF,我正在使用穿梭组件.我使用了获得所选的值sos1.getValue();
getValue()方法返回一个对象,我正在尝试将其转换为ArrayList,以便我以后可以使用它.因此我创造了ArrayList sos1Value
但是,这行代码是香蕉:
sos1Value = (ArrayList) Arrays.asList(sos1.getValue());
Run Code Online (Sandbox Code Playgroud)
我一直都有 java.lang.ClassCastException: java.util.Arrays$ArrayList cannot be cast to java.util.ArrayList
我尝试过其他方式: sos1Value = (ArrayList) sos1.getValue();
但我一直有同样的问题,我该怎么办?
arraylist ×10
java ×7
list ×3
.net ×2
android ×2
arrays ×2
c# ×2
casting ×1
collections ×1
comparison ×1
contains ×1
exception ×1
iteration ×1
object ×1
powershell ×1