单列集合,分为集合里面数据可重复的(List),集合里面数据不可重复的(Set)集合。
List集合常用的分为:ArrayList和LinkedList。
Set集合常用的分为:HashSet和TreeSet。
Collection集合
特点:
Collection集合是单列集合的顶层接口。它是个接口!
JDK不提供此接口的任何直接实例,它提供具体的子接口实现,如(Set和List)实现。
所以我们用的话,要使用多态的方式!具体的实现类ArrayList。
Collection集合常用方法:
public static void main(String[] args){
//创建集合
Collection<String> c = new ArratList<String>();
//添加方法, boolean add();
c.add("hello");
//移除方法,boolean remove();
c.remove("hello");
//清空集合所有元素 void Clear();
c.clear();
//判断集合是否存在指定元素 boolean contains();
c.contains("hello");
//判断集合是否为空 boolean isEmpty();
c.isEmpty();
//判断集合的长度,也就是集合中元素的个数 int size();
c.size();
}
Collection集合遍历的方法:
迭代器 Iterator方法
Collection<String> c = new ArratList<String>();
//返回集合中元素的迭代器,通过集合的iterator()方法得到
Iterator<String> it=c.iterator();
//boolean hasNext();如果有迭代有更多元素,返回true
while (it.hasNext()){
//只要为true,就不停的打印集合中的元素。
System.out.printIn(it.next());
}
List集合
list集合我们有两个常用子类:ArrayList(查询快,增删慢)和LinkedList(查询慢,增删快)。
特点:
有序:存储和去除的元素顺序一致。 可重复:存储的元素可以重复。
List集合特有方法:
List集合是继承了Collection 集合,所以 Collection有的方法List都有。
List<String> list = new ArrayList<String>();
list.add("hello");
list.add("word");
//在指定的位置插入指定的元素 void add(int index,E element);
list.add(1,"java");
//删除指定索引处的元素,返回被删除的元素 E remove(int index);
list.remove(1); //返回word
//修改指定索引出的元素,返回修改的元素 E set(int index,E element);
list.set(0,"javaa"); //返回hellow
//返回指定索引位置的元素
list.get(1);
List集合遍历:
for循环遍历
//遍历并打印到控制台
for(int i=0; i<list.size(); i++){
String s=list.get(i);
System.out.printIn(s);
}
当然List集合也可用用迭代器遍历。跟上面的一样,这里不再写了。
还有一种方法,就是增强for循环遍历。
for(String s : list){
System.out.printIn(s);
}
ArrayList 我在这里就不多说了,基本上集合有的它都有。
下面说一下LinkedList,它底层是由链表存储的。
LinkedList集合的特有功能:
我就不放代码了,麻烦了。累的慌,哈哈。用的话,直接创建Lined List集合,然后调用就行了。
Set集合
set集合也是继承Collection集合,它有的set集合都有。
Set集合特点:
不包含重复元素的集合,没有带索引的方法,所以不能用普通的for循环遍历。可以通过增强for循环遍历。
因为Set也是个接口,必须用多态的方式,用它的实现类,HashSet.
Set<String> set = new HashSet<String>();
set.add("hello");
set.add("word");
for(String s : set){
System.out.printIn(s);
}
HashSet集合
HashSet集合特点
底层数据结构是哈希表,对集合的迭代顺序不做任何保证,就是存储顺序和取出顺序不一定一致。
没有带索引的方法,不能用普通的for循环遍历。不包括重复元素。
问题: 我们用HashSet集合,存储数据的时候,不同的对象,但是所有属性的值都相同,如何保持唯一性。
说白了就是,例如:两个学生都叫小王,18岁。那么用HashSet集合,是存不进去的,但是存进去了。
找到学生类,按下alt+insert 自动添加equals()和hashCode()。直接Next自动生成完事。
TreeSet集合
TreeSet集合特点
元素有序,说的有序不是存储和取出的顺序,指的是按照一定的规则进行排序,具体方式取决构造方法。
没有带索引的方法,不能用普通的for循环遍历。不包括重复元素。
案例:
TreeSet<Integer> ts = new TreeSet<Integer>();
ts.add(10);
ts.add(30);
ts.add(20);
ts.add(50);
ts.add(40);
for(Integer i : ts){
System.out.printIn(i);
}
//输出结果
10
20
30
40
50
如果想做出特殊的排序方法,我们要实现 Comparable接口 并且重写compareTo方法