Java 从ArrayList中删除重复项<;ArrayList<;字符串>&燃气轮机;对象
我有一个包含嵌套字符串的ArrayList,我想从中删除重复项。我知道如果我总是想删除重复项,我不应该使用ArrayList,但在某些情况下,重复项是有效的。从嵌套的ArrayList中删除重复项的最佳方法是什么Java 从ArrayList中删除重复项<;ArrayList<;字符串>&燃气轮机;对象,java,Java,我有一个包含嵌套字符串的ArrayList,我想从中删除重复项。我知道如果我总是想删除重复项,我不应该使用ArrayList,但在某些情况下,重复项是有效的。从嵌套的ArrayList中删除重复项的最佳方法是什么 for (Iterator<ArrayList<String>> it = myListInList.iterator(); it.hasNext();) { ArrayList<String> current = it.next();
例如,我想执行一些Java转换:for (Iterator<ArrayList<String>> it = myListInList.iterator(); it.hasNext();) { ArrayList<String> current = it.next(); HashSet h = new HashSet(current); current.clear(); current.addAll(h); }
[[duplicate], [duplicate], [duplicate], [unique1], [unique2]]
至:[[duplicate], [unique1], [unique2]]
[[duplicate], [duplicate], [duplicate], [unique1], [unique2]]
[[duplicate], [unique1], [unique2]]
要从ArrayList中删除重复项,可以执行以下操作yourList = new ArrayList<String>(new LinkedHashSet<String>(yourList));
您可以这样做:
使用集合可以说什么,除非您将其放入一个循环中,因为您有一个两段式数组:
for(Iterator it=myListInList.Iterator();it.hasNext();) { ArrayList current=it.next(); HashSet h=新的HashSet(当前); current.clear(); 当前添加所有(h); }
import java.util.Arrays; public class RunDuplicate { public RunDuplicate() { super(); } public static void main(String[] args) { String[] duplicates = new String[] {"duplicate","duplicate","duplicate","unique1","unique2"}; Arrays.sort(duplicates); int k = 0; for (int i = 0; i < duplicates.length; i++) { if (i > 0 && duplicates[i].equals(duplicates[i -1])) continue; duplicates[k++] = duplicates[i]; } String[] unique = new String[k]; System.arraycopy(duplicates, 0, unique, 0, k); //test that unique contains no duplicate strings for (int i = 0; i < unique.length; i++) System.out.println(unique[i]); } }
Set Set=newlinkedhashset(); for(ArrayList:yourList){ set.addAll(列表); } ArrayList uniqueList=新的ArrayList(集合);
新建哈希集(列表…)不是答案吗?然后再转换成列表。你说这是一个列表列表。是否要将导入java.util.array; 公共类RunDuplicate { 公共RunDuplicate() { 超级(); } 公共静态void main(字符串[]args) { String[]duplicates=新字符串[]{“duplicate”、“duplicate”、“duplicate”、“unique1”、“unique2”}; 数组。排序(重复); int k=0; 对于(int i=0;i
0&&duplicates[i].equals(duplicates[i-1])) 继续; 重复[k++]=重复[i]; } 字符串[]唯一=新字符串[k]; System.arraycopy(副本,0,唯一,0,k); //测试unique不包含重复字符串 for(int i=0;i 折叠为{{1,2},{1,3}
?还是应该单独对待每个内部列表?我也有点困惑。你是在寻找[[1,2,3]、[1,2]、[3]、[1,2]、[1,2]、[3]、还是[1,2,3]或者是什么意思?@Itfishie-[1,2,3]、[1,2]、[3]、[1,2]、[1,2]、[1,2]]变成[[1,2,3]。@Itfishie-抱歉,我误解了,我希望它变成[1,2,3],你的解决方案对我有效。-1使用迭代器(而不是每个循环使用一个)我认为使用迭代器模式是有用的。Hashset将导致排序被破坏,但在本例中它与此无关[我不能将其视为先决条件]。{1,2},{3}