Collection
Collection 接口,在 Java 当中,Collection 也是重要的数据结构。
Collection 创建
在创建 Collection 的时候,要通过 new 关键字来使用。但是查看 Collection 源码的时候,发现 Collecting 是一个接口: 因为接口是不能实例化的,所以 new 的时候,要用一个具体的类。这里用数组来举例:
Collection collection = new ArrayList();
Collection 使用不加泛型
当 Collection 使用的时候,如果不加泛型,那么这里什么都可以放:字符串、整形、字节都可以放。代码如下:
public static void main(String[] args) {
Collection collection = new ArrayList();
collection.add("Hello");
collection.add(1);
}
这里就是通过 add 方法来添加元素。但是这样的话,什么类型都能添加,就会导致很杂乱。所以就可以使用泛型来规定添加的元素。
Collection 使用泛型
使用泛型就是加上 <> 里面写元素类型,要注意的是,这里的类型全是包装类。字符串的包装类是:String 整形的包装类是:Integer 。写了包装类的话,add 的时候就只能添加这一类型:
public static void main(String[] args) {
Collection<String> collection = new ArrayList<String>();
collection.add("hello");
collection.add("word");
System.out.println(collection);
}
Collection 后面的 String 可以不写,因为不写的话,编译器会通过前面的 String 来推导出相应的类型。如果这里 add 非字符类型的话,就会报错。运行结果如下:
Collection 方法
Collection 里面有很多自带的方法: 使用代码测试:
public static void main(String[] args) {
Collection<String> collection = new ArrayList<>();
collection.add("hello");
collection.add("word");
System.out.println(collection);
System.out.println(collection.size());
System.out.println(collection.isEmpty());
collection.remove("word");
System.out.println(collection);
Object[] objects = collection.toArray();
System.out.println(Arrays.toString(objects));
System.out.println(objects);
}
运行结果如下:
Map 接口
Map 是在 util 包下的接口。Map 有两个参数 <key,val> ,而且这两个参数必须是字符串。实现 Map 的方法 有哈希Map 和 TreeMap 一般用 哈希Map 。Map 的基本功能如下:
这里用 哈希Map 来举例:
public static void main(String[] args) {
Map<String,String> map = new HashMap<>();
map.put("Lockey","鲁班锁");
map.put("及时雨","宋江");
String ret = map.get("及时雨");
String tmp = map.getOrDefault("及时雨1","FM850");
System.out.println(ret);
boolean flag = map.containsKey("Lockey");
System.out.println(flag);
}
用 get 通过 “及时雨” ,来拿到后面的一个参数。 getOrDefault 就是:如果没找到第一个元素的话,就返回后面的 FM850 。运行结果如下:
Map 的存储结构
Map 在存储的时候,并不是顺序存储的,而是通过映射去存储的。代码示例:
public static void main(String[] args) {
Map<String,String> map = new HashMap<>();
map.put("及时雨","宋江");
map.put("Lockey","鲁班锁");
System.out.println(map);
}
输出如下: 先输出 “Lockey” 然后才是 “及时雨” 。
哈希Map 和 TreeMap 的有序与无序
哈希Map 在存储的时候是按照顺序存储的,而 TreeMap 在放入的时候并没有进行比较,没有排序。代码示例如下:
public static void main(String[] args) {
Map<Integer,String> map = new HashMap<>();
map.put(10,"宋江");
map.put(3,"鲁班锁");
System.out.println(map);
Map<String,String> map2 = new HashMap<>();
map2.put("efg","宋江");
map2.put("abc","鲁班锁");
System.out.println(map2);
Map<String,String> map3 = new TreeMap<>();
map3.put("及时雨","宋江");
map3.put("国民女神","鲁班锁");
System.out.println(map3);
Map<String,String> map4 = new HashMap<>();
map4.put("及时雨","宋江");
map4.put("国民女神","鲁班锁");
System.out.println(map4);
}
运行结果如下: 哈希Map 在放入数据的时候会进行排序,而 TreeMap 就不会进行排序。
二级目录
三级目录
|