pra*_*abu 35 java list arraylist
我有两个字符串对象的arraylists.
List<String> sourceList = new ArrayList<String>();
List<String> destinationList = new ArrayList<String>();
Run Code Online (Sandbox Code Playgroud)
我有一些逻辑,我需要处理源列表,并最终得到目标列表.目标列表将添加一些其他元素添加到源列表或从源列表中删除.
我的预期输出是2个字符串ArrayList,其中第一个列表应该从源中删除所有字符串,第二个列表应该具有新添加到源的所有字符串.
任何更简单的方法来实现这一目标?
Max*_*tin 59
将列表转换为 Collection
并使用removeAll
Collection<String> listOne = new ArrayList(Arrays.asList("a","b", "c", "d", "e", "f", "g"));
Collection<String> listTwo = new ArrayList(Arrays.asList("a","b", "d", "e", "f", "gg", "h"));
List<String> sourceList = new ArrayList<String>(listOne);
List<String> destinationList = new ArrayList<String>(listTwo);
sourceList.removeAll( listTwo );
destinationList.removeAll( listOne );
System.out.println( sourceList );
System.out.println( destinationList );
Run Code Online (Sandbox Code Playgroud)
输出:
[c, g]
[gg, h]
Run Code Online (Sandbox Code Playgroud)
[编辑]
其他方式(更清楚)
Collection<String> list = new ArrayList(Arrays.asList("a","b", "c", "d", "e", "f", "g"));
List<String> sourceList = new ArrayList<String>(list);
List<String> destinationList = new ArrayList<String>(list);
list.add("boo");
list.remove("b");
sourceList.removeAll( list );
list.removeAll( destinationList );
System.out.println( sourceList );
System.out.println( list );
Run Code Online (Sandbox Code Playgroud)
输出:
[b]
[boo]
Run Code Online (Sandbox Code Playgroud)
Hus*_*man 14
这应检查两个列表是否相等,它首先进行一些基本检查(即空值和长度),然后排序并使用collections.equals方法检查它们是否相等.
public boolean equalLists(List<String> a, List<String> b){
// Check for sizes and nulls
if (a == null && b == null) return true;
if ((a == null && b!= null) || (a != null && b== null) || (a.size() != b.size()))
{
return false;
}
// Sort and compare the two lists
Collections.sort(a);
Collections.sort(b);
return a.equals(b);
}
Run Code Online (Sandbox Code Playgroud)
将List
in 转换为String
并检查字符串是否相同
import java.util.ArrayList;
import java.util.List;
/**
* @author Rakesh KR
*
*/
public class ListCompare {
public static boolean compareList(List ls1,List ls2){
return ls1.toString().contentEquals(ls2.toString())?true:false;
}
public static void main(String[] args) {
ArrayList<String> one = new ArrayList<String>();
ArrayList<String> two = new ArrayList<String>();
one.add("one");
one.add("two");
one.add("six");
two.add("one");
two.add("two");
two.add("six");
System.out.println("Output1 :: "+compareList(one,two));
two.add("ten");
System.out.println("Output2 :: "+compareList(one,two));
}
}
Run Code Online (Sandbox Code Playgroud)
小智 5
如果您的要求是维护插入顺序并检查两个数组列表的内容,那么您应该执行以下操作:
List<String> listOne = new ArrayList<String>();
List<String> listTwo = new ArrayList<String>();
listOne.add("stack");
listOne.add("overflow");
listTwo.add("stack");
listTwo.add("overflow");
boolean result = Arrays.equals(listOne.toArray(),listTwo.toArray());
Run Code Online (Sandbox Code Playgroud)
这将返回 true。
但是,如果您更改顺序,例如:
listOne.add("stack");
listOne.add("overflow");
listTwo.add("overflow");
listTwo.add("stack");
boolean result = Arrays.equals(listOne.toArray(),listTwo.toArray());
Run Code Online (Sandbox Code Playgroud)
将返回 false,因为排序不同。
归档时间: |
|
查看次数: |
189387 次 |
最近记录: |