- 集合的概述
- 集合类存放于java.util包中。
集合类存放的都是对象的引用,而非对象本身,出于表达上的便利,我们称集合中的对象就是指集合中对象的引用(reference)。
- 集合类存放于java.util包中。
贝贝熊语录:集合就是生活中的容器,用来存放东西用的,由于Java是面向对象的语言,所以对于集合而言就是放对象的容器,只不过对于数组而言,集合不固定长度
集合的关系
List集合的介绍
public void creatList(){
/**
* 如何创建一个 ArrayList 或者 LinkedList
* 1.普通的创建
* 2.接口回掉
* 注意:<>里面代表的是泛型
*/
ArrayList<String> arrayList = new ArrayList<String>(); //普通的创建
LinkedList<String> linkedList = new LinkedList<String>(); //普通的创建
List<String> arrayList2 = new ArrayList<String>(); //接口回掉
List<String> linkedList2 = new ArrayList<String>(); //接口回掉
/**
* 如何添加 ArrayList 或者 LinkedList 的元素
* 方法:Boolean b = add(E e)
*/
arrayList.add("我爱CSDN");
linkedList.add("我爱CSDN");
/**
* 如何取 ArrayList 或者 LinkedList 的元素
* 方法:E e = get(index)
*/
String str = arrayList.get(0);
String str2 = linkedList.get(0);
/**
* 如何删除 ArrayList 或者 LinkedList 的元素
* 方法:E e = remove(index)
*/
String e = arrayList.remove(0);
String e2 = linkedList.remove(0);
}
贝贝熊语录:
ArrayList 或者 LinkedList都是list接口下面的,他们放入的元素是有序的
区别在于:ArrayList内部维护的是数组,而LinkedList内部维护的是链表
因此导致ArrayList查询数据比较快,而LinkedList删除数据比较快
- Set集合的介绍
public static void main(String[] args) {
//Set 集合存和取的顺序不一致。
Set hs = new HashSet();
hs.add("世界");
hs.add("兵器");
hs.add("舰船");
hs.add("汉和");
Iterator it = hs.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
}
public static void main(String[] args) {
HashSet hs = new HashSet();
hs.add(new Person("jack", 20));
hs.add(new Person("rose", 20));
hs.add(new Person("hmm", 20));
hs.add(new Person("lilei", 20));
hs.add(new Person("jack", 20));
Iterator it = hs.iterator();
while (it.hasNext()) {
Object next = it.next();
System.out.println(next);
}
}
/**
* 一批数据,要求不能重复存储元素,而且要排序。ArrayList 、 LinkedList不能去除重复数据。
* HashSet可以去除重复,但是是无序。
*所以这时候就要使用TreeSet了
*/
public static void main(String[] args) {
TreeSet ts = new TreeSet();
ts.add("ccc");
ts.add("aaa");
ts.add("ddd");
ts.add("bbb");
System.out.println(ts); // [aaa, bbb, ccc, ddd]
}
- Map集合的介绍
HashMap Hashtable TreeMap区别
1、HashMap:允许null键null值Hashtable:不允许null键null值TreeMap:允许null值不允许null键
2、TreeMap的输出会按照key默认排序(根据ASCII码表)
3、HashMap非同步处理 速度快 不安全 Hashtable 同步处理速度慢 安全
4、HashMap的输出是无序的
1、添加:
1、V put(K key, V value) (可以相同的key值,但是添加的value值会覆
盖前面的,返回值是前一个,如果没有就返回null)
2、putAll(Map<? extends K,? extends V> m) 从指定映射中将所有映射关
系复制到此映射中(可选操作)。
2、删除
1、remove() 删除关联对象,指定key对象
2、clear() 清空集合对象
3、获取
1:value get(key); 可以用于判断键是否存在的情况。当指定的键不存在的时候,返
回的是null。
3、判断:
1、boolean isEmpty() 长度为0返回true否则false
2、boolean containsKey(Object key) 判断集合中是否包含指定的key
3、boolean containsValue(Object value) 判断集合中是否包含指定的value
4、长度:
Int size()
- 迭代器的介绍
java迭代器是用来遍历集合的
Iterator迭代器:
1.它是一个接口,是不能实例化的。
只能接收集合类对象调用自己的iterator方法来生成的Iterator对象
2.迭代器Iterator有3个方法
boolean hasNext()如果仍有元素可以迭代(用来判断当前指针指向的下一位置是否还有元素),有返回true
E next() 返回迭代的下一个元素(指针指向下一位置,并返回指向的元素)
void remove()删除当前迭代的元素
3. 用来遍历集合时,需要hasNext()方法和next()方法配合使用
4.在遍历的过程中,不允许对集合进行增删操作。如果想要对集合进行删除操作,也必须调用迭代器的remove()方法
public static void main(String[] args) {
List<String>list=new ArrayList<>();
list.add("a");
list.add("b");
Iterator<String>it=list.iterator();//得到lits的迭代器
//调用迭代器的hasNext方法,判断是否有下一个元素
while (it.hasNext()) {
//将迭代器的下标移动一位,并得到当前位置的元素值
System.out.println(it.next());
}
}