我有ArrayList
个字符串,其大小为1,000 to 30,000
个元素。
ArrayList<String> name= new ArrayList<String>();
ArrayList<ArrayList<String>> similar_group =new ArrayList<ArrayList<String>>();
for(int i=0;i<munber;i++)
{
name.Add("name");
}
我想将类似的字符串分组并将它们放到ArrayList
。
例如,10
中的name ArrayList
个元素值为&#34; a&#34;然后所有元素的值等于&#34; a&#34;应添加到ArrayList
,然后ArrayList
应添加到similar_group
ArrayList
。
如果name
ArrayList
中有任何元素的值是唯一的,那么即使这个元素应添加到ArrayList
,然后ArrayList
应该添加到{{} 1}} ArrayList。
ArrayList的大小可能很大。有没有办法做到这一点?
答案 0 :(得分:1)
package application;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class T {
public static void main(String[] args) throws ParseException {
List<String> list = Arrays.asList("A", "B", "C", "D", "B");
Map<String, List<String>> map = new HashMap<>();
list.forEach(ele->{
List<String> innerList= new ArrayList<>();
if(map.containsKey(ele)){
innerList = map.get(ele);
}
innerList.add(ele);
map.put(ele, innerList);
});
List<List<String>> valueList = map.values().stream().collect(Collectors.toList());
System.out.println(valueList);
}
}
将每个唯一元素添加到像这样的列表中
o / p:[[A],[B,B],[C],[D]]
package application;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
public class T {
public static void main(String[] args) throws ParseException {
List<String> list = Arrays.asList("A", "B", "C", "D", "B");
HashMap<String, List<String>> map = new HashMap<>();
List<List<String>> valueList = new ArrayList<>();
list.stream().forEach(ele -> {
List<String> innerList = new ArrayList<>();
if (map.containsKey(ele)) {
innerList = map.get(ele);
} else {
valueList.add(innerList);
}
innerList.add(ele);
map.put(ele, innerList);
});
System.out.println(valueList);
}
}
答案 1 :(得分:0)
如果您需要删除ArrayList
中的重复内容,则应考虑是否确实需要使用List
(允许重复)而不是Set
(其中不是Set
。 t允许重复)。这里唯一需要注意的是LinkedHashSet
是无序的,但可以使用ArrayList
进行更改。
如果您需要将其保留为ArrayList
,请尝试将HashSet
中的所有内容添加到ArrayList
并返回List<String> a = new ArrayList<>();
Set<String> s = new HashSet<>();
s.addAll(a);
a.clear();
a.addAll(s);
以删除重复项(这样做不会保留元素的顺序):
starArray[streakCounter-1].image = UIImage(named: "22.png")