collection:
- 容器 接口,可以定义一个这个接口的变量,但是不能实例化,只能实例化实现该接口的实现类 来赋给他,这是可以的
- 旗下两个子接口 List 与Set ,这些个都是重写了obj的toStirng方法,打印这个对应的变量名,就是打印出来其所有的内容
- collection的抽象方法 add(obj) 往容器里面添加元素,remove(obj)移除元素,contains(obj)包含某个元素,size()容器中所含元素的数量,isEmpty()是否为空
- 可以定义成泛型的,也可以不定义成泛型的
List:
- 除了继承了collection的一些方法外,又新增加了一些方法,add(idx,obj) 通过下标来添加,get(idx)通过下标来获得对应索引处的值,remove(idx)通过下标来移除对应位置的值,这也就是为什么 你会看到明明 同一个名字的 方法 调用的 时候,参数是不同的,原来感觉是很奇怪的,现在才知道,是方法的重载,set(idx,obj),indexOf(obj)返回对象在集合中出现的位置索引
- 实现类 ArrayList 底层实现是数组,可以认为是变长数组,可以存放重复的元素
- 实现类LinkedList底层实现是双重链表,但是因为是实现了List接口,也有get,add,add,set,indexOf()等方法,他除了实现了List接口的方法,自己还定义了一些个方法,头插,尾插,得头,得尾,去头,去尾,addFirst(),addLast(),getFirst,注意LinkedList中存放不了重复的元素
现在看的视频上的有些东西看起来很没有用,但是实际上,他是理解的基础,就是为是么这个方法定义成这样的名字,那个方法什么要定义成静态的。
String的valueOf()也是多个重载的静态的方法,是通过类名直接调用的,String.valueOf(),Integer.toString(),
Map:
- map接口 键值对, 整数类的对象是Integer ,put(key,value) ,get(key),containsKey(),containsValue(),clear(),remove(key)移除的是整个键值对
-
public class TTT { public static void main(String[] args) throws Exception{ // TODO 自动生成的方法存根 Map<Integer,String> mp=new TreeMap<>(); mp.put(2, "2"); mp.put(1, "1"); mp.put(3, "3"); mp.put(6, "6"); Set keySet=mp.keySet(); Iterator it=keySet.iterator(); while(it.hasNext()){ Integer i=(Integer)it.next(); System.out.println(i+" "+mp.get(i)); } // for(Integer key:mp.keySet()){ // // System.out.println(key+" "+mp.get(key)); // } // } }