容器API属于 java.util.* 内
重点:1图 1类 3 知识点 6 接口
1图:常见的一些接口
Set:没有顺序且不可以重复。
1类:Collections
3知识点:
6接口:
comparable
Collection常用方法:
注意:语法(... instanceof ...)判断一个类是否是另一个类
if(Obj instanceof Name){
Name a =(Name)obj;
}
Collection c = new ArrayList<***>();
//父类引用指向子类对象,访问不了子类的方法(设计模式相关) //方便以后换
顺带一提:面向对象着重类与类之间的各种关系,而面向对象的三大特点:封装,多态,继承。
Iterator 接口
有多态的存在(多态存在的三大条件:有继承、有重写、有父类引用指向子类的对象)
Iterator 存在于每个实现了Collection接口的容器中,他们可以返回一个实现了Iterator接口的对象。
作用:迭代器,遍历容器内的元素。
Iterator常用方法:
Iterator 方法的运用
import java.util.*;
class Test{
public static void main(String[] args){
HashSet
c.add(new Name("f1","l1"));c.add(new Name("f2","l2"));
for(Iterator
Name n = i.next();
System.out.println(n.firstname+" "+n.lastname);
}
}
}
class Name{
String firstname,lastname;
Name(String firstname,String lastname){
this.firstname = firstname;
this.lastname = lastname;
}
}
Collection
c.add(new Name("fff1","lll1"));
c.add(new Name("f2","l2"));
c.add(new Name("fff3","lll3"));
for(Iterator
Name n = i.next();
if(n.getFirstName().length()<3){
i.remove();
}
}
System.out.println(c);
增强的for循环
只能简单遍历并且读出其中的内容。
int[] arr = {3,4,5,6,7};
for(int i :arr){
System.out.println(i);
}
import java.util.*;
Collection
c.add("aaa");c.add("bbb");c.add("ccc");
for(String s: c){
System.out.println(s);
}
Set(HashSet)
(没有顺序且不可以重复)
Set
s.add("aaa");
s.add("aaa")://!!!这句话不会被执行
若 S1:[a,b,c] s2:[b,c,d]
s1.addAll(s2); s1:[a,b,c,d] /////(就像集合里面的求交集)
Set
Map接口
(HashMap,TreeMap(二叉树,红黑树))
存储 键-值(key-value)
注意:键值不能重复:所以修改了equal,就必须修改HashCode;
常用的方法:
import java.util.*;
...
Map
m1.put("One",1);m1.put("Two",2);m1.put("Three",3);
System.out.println(m1.size());
System.out.println(m1.containsKey("One"));
if(m1.containsValue(1)){
int i = (Integer)m1.get("Two");
System.out.println(i);
}
List(LinkedList,ArrayList):
List
for(int i =0 ;i<=5;i++){
l1.add("a"+i);
} //l1:[a0,a1,a2,a3,a4,a5]
l1.add(3,"a100"); //在第四个位置插入a100 l1:[a0,a1,a2,a100,a3,a4,a5]
l1.set(6,"a200"); //把第七个位置的替换为a200 l1:[a0,a1,a2,a100,a3,a4,a200];
String a = l1.get(3); // 得到第四个元素
int i = l1.indexOf("a3"); // 返回元素a3的位置 下标从0开始
l1.remove(1);
List容器常用的算法!!! 都在java.util.Collections
特别注意:
要用到以上的方法,应该这样写: Collections.sort(l1); Collections.reverse(l1);.......
Comparable 接口
属于 java.lang.Comparable (所有可以“排序”的类都实现了java.lang.Comparable接口)
要想使一个类实现implements这个Comparable
利用comparable,实现类对象的排序方式
public int compareTo(Object obj){
this = = obj ;返回0
this>obj;返回大于0
this } 举个例子: 使多个姓名按照英文字母排序 class Name implements Comparable String firstname,lastname; Name(String firstname,String lastname){ this.firstname = firstname; this.lastname = lastname; } public int compareTo(Name n){ //(有了泛型可以省略)Name n = (Name)o int lstcmp = lastname.compareTo(n.lastname); return (lastcmp!=0?lastcmp:firstname.compareTo(n.firstname)); } }