集合是一种容器。
集合和数组的不同之处:只用于存储对象,集合长度可变,数组只能存同一种类型的对象,集合可以存任意对象。
Collection
|--List:元素是有序的,元素可以重复,因为该集合提醒有索引
|--ArrayList:底层的数据结构使用的是数组,查询速度很快,增删稍慢。是不同步的,容易出安全隐患。单线程用,效率高。
|--LinkedList:底层数据结构使用的是链表数据结构,查询速度慢,增删快
|--Vetor:底层是数组数据结构。victor是同步的,进步不用了
|--Set:元素无需,不可重复,无索引
|--HashSet :底层数据结构是哈希表。
|--TreeSet
Collection
collection是一个接口
其中包含ArrayList 和 LinkedList 和 Vector 三个主要的类
集合中存储的是对象的引用。
主要方法介绍:以ArrayList为例
import java.util.*;
public class Test {
public static void main(String adgs[])
{
ArrayList al = new ArrayList();
ArrayList al2 = new ArrayList();
al2.add("ppp");
al2.add("kkk");
//1,,添加元素
al.add("java1");
al.add("java2");
al.add("java3");
al.add("java4");
//2,获取长度
sop("size:"+al.size());
//3,打印集合
sop(al);
//4,删除元素
al.remove("java2"); //使用该对象的equals来判断是否相同
sop(al);
//5,清空集合
al.clear();
sop(al);
al.add("java1");
al.add("java2");
al.add("java3");
al.add("java4");
//6,判断元素
sop("java1是否存在"+al.contains("java1")); //equals
//7,添加集合 addall
al.addAll(al2);
sop(al);
//8,取交集,存放在al中
al.clear();
al2.clear();
al.add("java1");
al.add("java2");
al.add("java3");
al.add("java4");
al2.add("ppp");
al2.add("kkk");
al2.add("java3");
al2.add("java4");
al.retainAll(al2);
sop(al);
//9,取差集 al/al2
al.removeAll(al2);
//10,containsAll() 返回 true or false
}
public static void sop(Object o)
{
System.out.println(o);
}
}
迭代器类:Interator
取出并操作元素:
统一了集合元素的取出方式。
使用过程:
获取对象
Interator it = collection.iterator();
方法 Object it.next()//取出元素
boolean it.hasNext()//判断是否还有元素可以取出
import java.util.*;
public class Test {
public static void main(String adgs[])
{
ArrayList al = new ArrayList();
//1,,添加元素
al.add("java1");
al.add("java2");
al.add("java3");
al.add("java4");
/*
Iterator it = al.iterator();//获取迭代器,用于取出集合中的元素
while(it.hasNext())
sop(it.next());
*/
for(Iterator it = al.iterator();it.hasNext();) //这种写法节省内存
sop(it.next());
}
public static void sop(Object o)
{
System.out.println(o);
}
}
List
List特有的常见方法:
凡是可以操作角标的方法都是
增
add(index,element)
addAll(index,Collection)
删
remove(index)
改
set(index,element)//ele:元素
查
get(index)
subList(from,to)
listIterator()
ArrayList
import java.util.*;
public class Test {
public static void main(String adgs[])
{
ArrayList al = new ArrayList();
//添加元素
al.add("java01");
al.add("java02");
al.add("java03");
sop("元集合"+al);
al.add(1,"java09");
sop(al);
//删除指定位置元素
al.remove(2);
sop(al);
//修改元素
al.set(1, "jjj");
sop(al);
//查
sop("1:"+al.get(1));
//获取所有元素。
for(int x=0;x<al.size();x++)
sop("al()"+al.get(x));
//通过 indexOF获取对象的位置
sop(al.indexOf("java03"));
List sub = al.subList(1, 3);
sop(sub);
}
public static void sop(Object o)
{
System.out.println(o);
}
}
列表迭代器
import java.util.*;
public class Test {
public static void main(String adgs[])
{
ArrayList al = new ArrayList();
al.add("java01");
al.add("java02");
al.add("java03");
Iterator it = al.iterator();
while(it.hasNext())
{
Object obj = it.next();
if(obj.equals("java02"))
it.remove(); //讲java02从集合中删除了。但不支持al.add()操作
//会引发异常
sop(obj);
}
sop(al);
}
public static void sop(Object o)
{
System.out.println(o);
}
}
所以就有了列表迭代器:
LinkedList
特有方法:
addFirst(obj);//在LL的最开头添加obj
addLast(obj);
getFirst(); //获取头,尾
getLast();
removeFirst();//获取元素,但是元素会被删除。如果没有元素,会出现异常。
removeLast();
ArrayList 练习
删除重复对象,核心在于重写该对象的equals方法
注意类型转换多态的应用。
Set
Set接口:元素无须,不可重复。
Set的功能是和Collection是一致的
建立对象时建立 HashSet
- java三大集合框架(面试知识储备精华篇)
java三大集合框架 : set list map 如上图 set list 都属于collection的子接口(collection为顶层接口) Map 不属于collection接口 Se ...
- java基础—集合框架
java基础-集合框架 JDK1.2开始引入了集合框架的概念,以弥补java中只有数组这种容器的单一问题,这些框架多数由接口构成,另外也包含了一些对于接口实现的类,其中这些接口的最上层接口为java. ...
- 13.集合框架ListSet
JavaSE高级 集合框架List&Set 第1章 泛型 1.1 泛型概述 集合中是可以存放任意对象的,只要把对象存储集合后,那么这时他们都会被提升成Object类型.当我们在取出每一个对象, ...
- Java基础—集合框架(三)
一Map集合 二Map扩展知识 集合框架(三) 一.Map集合 1.概述 Map集合用于存储键值对,且它保证键的唯一性,并且每个键最多只能映射一个值.Map集合是Set集合的底层实现,其和Collec ...
- Java程序设计——集合框架
目录 一.概述 Collection:单列集合类的根接口,用于存储一系列符合某种规则的元素,它有两个重要的子接口,分别是List和Set.其中,List的特点是元素有序.元素可重复.Set的特点是元素 ...
- java之集合框架一Collection接口
1.集合的由来: 我们学习的是面向对象的语言.而面向对象语言对事物的描述是通过对象体现的.为了方便对多个对象进行操作,我们就必须把多个对象进行存储.而要想存储多个对象,就不能是一个基本的变量,而应该是 ...
- Java 容器集合框架概览
Java Collections Framework 集合的概念 集合collection,有时叫做容器container,把多个元素组成一个单元. 早期的Java (pre-1.2) 中包含了Vec ...
- [转载]Java-集合框架完全解析
在简书上看到一篇介绍Java集合框架的文章,写得挺详细的,http://www.jianshu.com/p/63e76826e852这是原文地址. 数据结构是以某种形式将数据组织在一起的集合,它不仅存 ...
- Java学习----集合框架总结
集合框架总结: Collection接口:Set接口:HashSet//对象必须实现hashCode方法,元素没有顺序呢,效率比LinkedHashSet高LinkedHashSet//是HashSe ...