文章目录
1. List与Set互相转换
1.1 List转换为Set
List<String> list = new ArrayList<>();
//方式一
Set<String> set1 = new HashSet<>(list);
//方式二
Set<String> set2 = new HashSet<>();
team2.addAll(list);
1.2 Set转换为List
Set<String> set = new HashSet<>();
//方式一
List<String> list = new ArrayList<>(set);
//方式二
List<String> list2 = new ArrayList<>();
list2.addAll(set);
2. 数组与List互相转换
2.1 数组转换为List
String[] array = new String[n];
List<String> list = Arrays.asList(array);
2.2 List转换为数组
//方式一
String[] s = list.toArray(new String[0]);
//方式二
String[] str = new String[list.size()];
list.toArray(str);
2.2.1 toArray()方法
- toArray()的无参方法
toArray()的无参方法是构造一个Object类型的数组,然后进行数据拷贝,但如果将这个Object类型的数组转换为它的子类类型的数组就会产生ClassCastException
String[] str = (String[]) list.toArray();
把java.lang.Object转换成java.lang.String是显然不可能的事情,因为这里是一个向下转型,而虚拟机只保存了这是一个Object的数组,不能保证数组中的元素是String类型的,所以这个转型不能成功。
- toArray()的有参方法
toArray()的有参方法是根据参数数组的类型,构造一个数组类型和参数数组类型相同,数组长度和List的Size()一致的数组
2.2.2 应用
2.2.2.1 leetcode–1078. Bigram 分词
1078. Bigram 分词
这道题目很简单,直接上代码:
public String[] findOcurrences(String text, String first, String second) {
List<String> res = new ArrayList<>();
String[] words = text.split(" ");
for (int i = 0; i < words.length - 2; i++) {
if (words[i].equals(first) && words[i + 1].equals(second))
res.add(words[i + 2]);
}
return res.toArray(new String[0]);
}
注意:
- split方法字符串进行分割;
- toArray(new String[0])将List转换为数组;
3. 数组转换为Set
String[] array = new String[8];
Set<String> set = new HashSet<>(Arrays.asList(array));