java字符数组的arraylist
我最初有一个字符串的arraylist,但我想将其另存为这些字符串的arraylist。toCharArray()代替。是否可以创建一个存储字符数组的arraylist?下面是我如何尝试实现它的java字符数组的arraylist,java,arrays,string,arraylist,char,Java,Arrays,String,Arraylist,Char,我最初有一个字符串的arraylist,但我想将其另存为这些字符串的arraylist。toCharArray()代替。是否可以创建一个存储字符数组的arraylist?下面是我如何尝试实现它的 String[] words = new String[]{"peter","month","tweet", "pete", "twee", "pet", "et"}; HashMap<Integer,ArrayList<Character[]>> ordered = n
String[] words = new String[]{"peter","month","tweet", "pete", "twee", "pet", "et"};
HashMap<Integer,ArrayList<Character[]>> ordered = new HashMap<>();
int length = 0;
int max = 0; //max Length of words left
for(String word: words){
if(ordered.containsKey(length) == false){ //if int length key doesnt exist yet
ordered.put(length, new ArrayList<Character[]>()); //put key in hashmap with value of arraylist with the one value
ordered.get(length).add(word.toCharArray());
}
}
String[]words=新字符串[]{“彼得”、“月”、“推特”、“皮特”、“特威”、“宠物”、“et”};
HashMap ordered=新的HashMap();
整数长度=0;
int max=0//剩余单词的最大长度
for(字符串字:字){
if(ordered.containsKey(length)==false){//if int-length键还不存在
ordered.put(长度,new ArrayList());//将值为ArrayList的键和一个值放在hashmap中
ordered.get(length.add(word.toCharArray());
}
}
请注意,tocharray()
返回一个基元数组(char[]
),而不是一个装箱类数组(Character[]
)。此外,如果数组的长度不在映射中,则仅将给定数组添加到映射中,这可能不是您想要的行为(即,您应该将行ordered.get(length).add(word.toCharArray());
移到if
语句之外)
另外,请注意,Java 8的流可以为您完成很多繁重的工作:
String[] words = new String[]{"peter","month","tweet", "pete", "twee", "pet", "et"};
Map<Integer, List<char[]>> ordered =
Arrays.stream(word)
.map(String::toCharArray)
.collect(Collectors.groupingBy(x -> x.length));
String[]words=新字符串[]{“彼得”、“月”、“推特”、“皮特”、“特威”、“宠物”、“et”};
有序地图=
Arrays.stream(word)
.map(字符串::tocharray)
.collect(收集器.groupingBy(x->x.length));
编辑:根据评论中的问题,在没有流的Java 7中,这也是完全可能的:
String[] words = new String[]{"peter","month","tweet", "pete", "twee", "pet", "et"};
Map<Integer, List<char[]>> ordered = new HashMap<>();
for (String word: words) {
int length = words.length();
// if int length key doesnt exist in the map already
List<char[]> list = orderd.get(length);
if (list == null) {
list = new ArrayList<>();
orderd.put(length, list);
}
list.add(word);
}
String[]words=新字符串[]{“彼得”、“月”、“推特”、“皮特”、“特威”、“宠物”、“et”};
Map ordered=新的HashMap();
for(字符串字:字){
int length=words.length();
//如果映射中不存在int-length键
List List=orderd.get(长度);
if(list==null){
列表=新的ArrayList();
订单放置(长度、列表);
}
列表。添加(word);
}
Ohhh谢谢你,你能多谈谈char[]和拳击类角色[]吗。我想我必须有地图,而不是通用的。稍后我将研究Java 8流,但在Java 7中有没有这样做的方法?@PeterLuo数组是Java中的引用类型,因此char[]
可以用作类型参数。由于char
是一种基本类型,因此它不能()。有关Java 7问题的答案,请参见下文。@PeterLuo Logan的评论基本上解释了char
vsCharacter
这一点。WRT在Java7中实现了这一点——这有点笨重,但完全可能。有关详细信息,请参阅我编辑的答案。