1,List集合与Array数组相互转换
集合转数组:
List<String> list = new ArrayList<>();
list.add("你");
list.add("好");
list.add("吗");
String[] strArr = new String[list.size()];
list.toArray(strArr);
数组转集合:
String[] hello = {"你","好","吗"};
List list = Arrays.asList(hello);
System.out.println(list);
箴言:你所遇到的绝大多数问题,都是前人所遇到过的。他们总结了方法,你只要能够知道他们总结的方法,就能少走很多弯路。
2,Java中泛型的作用及使用
1,编译时的类型检查;
2,消除显性的强制类型转换;
3,更好的代码复用性,比如实现泛型算法。
我们首先来看一个没有使用泛型的例子:
List list = new ArrayList();
list.add("你");
list.add(1);
// 运行时会报错,Integer cannot be cast to String
String it = (String) list.get(1);
// 我们可以向集合中添加任何类型的数据。
// 但是,没有泛型的时候,减少了编译时的类型检查,
// 在取出元素时需要程序员对每个元素的类型都了解,否则很可能在运行时出现类型转换的异常。
再看一个使用泛型的例子:
List<String> list = new ArrayList<>();
list.add("今天天气真晴朗");
list.add("春来江水绿如蓝");
// 编译时报错
list.add(1);
// 不需要强制类型转换
String str = list.get(0);
泛型主要使用在类、方法与接口中,我们来看一个简单的在类中使用的案例。
public class Room<T> {
private T value;
public T getValue() {
return value;
}
public void setValue(T value) {
this.value = value;
}
}
public class test {
public static void main(String[] args) {
// 测试
Room<String> room = new Room<>();
room.setValue("Hello World");
System.out.println(room.getValue());
}
}
参考博客:
java泛型的作用及其基本概念
https://www.cnblogs.com/justinli/p/generic.html
3,Map最常用的遍历方式:迭代(Iterator)
Map<String, String> map = new HashMap<>();
map.put("one", "haha");
map.put("two", "lala");
Iterator<Map.Entry<String, String>> entries = map.entrySet().iterator();
while (entries.hasNext()){
Map.Entry<String, String> entry = entries.next();
System.out.println(entry.getKey() + " " + entry.getValue());
}
4,List和Set相互转换
List允许出现重复值,Set不允许。所以可以将List转成Set从而实现去重的效果。
public class test {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("a");
list.add("a");
list.add("b");
Set<String> set = new HashSet<>(list);
System.out.println(list + "\n" + set);
}
}
Set转List
public class test {
public static void main(String[] args) {
Set<String> set = new HashSet<>();
set.add("a");
set.add("b");
List<String> list = new ArrayList<>(set);
System.out.println(set + "\n" + list);
}
}