您的位置:首页 > 编程语言 > Java开发

【Java基础15_1】Collection类及其基本用法

2017-10-20 21:44 609 查看

Collection类->目录

【回顾】集合与数组的区别

1. 集合体系图

2. 常见API

2.1 添加功能

2.2 删除功能

2.3 判断功能

2.4 获取功能

2.5 长度功能

2.6 交集功能

2.7 把集合转换为数组

3. 面试题

4. 获取交集的注意事项

5. 集合的遍历

5.1 利用数组遍历

5.2 用迭代器遍历

集合和数组区别

长度区别:

数组的长度是固定的而集合的长度是==可变==的

存储数据类型的区别:

数组可以存储基本数据类型 , 也可以存储引用数据类型;

集合只能存储引用数据类型

内容区别:

数组只能存储同种数据类型的元素 ,集合可以存储==不同类型==的元素

1.体系结构图



Collection常见API

添加功能

方法声明作用
boolean add ( Object obj )添加一个元素
boolean addAll ( Collection c )添加一个集合的元素
删除功能

方法声明作用
void clear()移除所有元素
boolean remove(Object o)移除一个元素
boolean removeAll(Collection c)移除一个集合的元素(一个)
判断功能

方法声明作用
boolean contains(Object o)判断集合中是否包含指定的元素
boolean containsAll(Collection c)判断集合中是否包含指定的集合元素(所有)
boolean isEmpty( )判断集合是否为空
获取功能

获取当前集合的迭代器

方法声明作用
Iterator < E > iterator( )迭代器遍历(重点)
长度功能

方法声明作用
int size()元素的个数
交集功能

boolean retainAll ( Collection );

把集合转换为数组

Objec [ ] toArray()

面试题

数组有没有 length() 方法呢?字符串有没有length()方法呢 ? 集合有没有 length( ) 方法呢?

答:数组有 length 属性;字符串有length()方法;集合没有 length( ),但是有size( )方法

获取交集的注意事项

boolean retainAll ( Collection c )


获取交集。获取到的元素去c中,布尔类型的值表示集合是否==发生改变==

如果c.retainAll(c1), 获取到的交集元素去了c中,布尔类型的值表示c这个集合是否发生改变。如果改变了就返回true.

public class CollectionDemo1 {

public static void main(String[] args) {

//创建一个集合
Collection<String> c1 = new ArrayList<>();

Collection<String> c2 = new ArrayList<>();

//添加元素
c1.add("田馥甄");
c1.add("银临");
c1.add("谢春花");

c2.add("谢春花");

System.out.println("c1获取交集前:"+c1);
System.out.println("c2获取交集前:"+c2);

//获取交集
System.out.println("获取交集后的集合是否发生改变:  "+c1.retainAll(c2));
System.out.println("C1获取交集后: "+c1);
System.out.println("C2: "+c2);
}
}


程序运行结果:

c1获取交集前:[田馥甄, 银临, 谢春花]

c2获取交集前:[谢春花]

获取交集后的集合是否发生改变: true

C1获取交集后: [谢春花]

C2: [谢春花]

集合的遍历

其实就是依次获取集合中的每一个元素。有以下两种方法:

1. 用数组遍历

把集合转成数组

通过遍历数组实现遍历集合

集合转为数组方法:

Object[] toArray():


import java.util.ArrayList;
import java.util.Collection;

/*
* 用数组遍历集合
*/
public class CollectionTraversalArray {

public static void main(String[] args) {

//创建集合
Collection<String> c = new ArrayList<String>();
//添加元素
c.add("周杰伦");
c.add("朴树");
c.add("毛不易");

//转为数组
Object[] obj = c.toArray();

//遍历数组
for(Object ob:obj) {
//向下转型
String str = (String)ob;
System.out.print(str+"  ");
}

}

}


package com.itbull;

import java.util.ArrayList;
import java.util.Collection;

/*
* 数组遍历法
* Collection遍历自定义类型Singer
*/
public class CollectionTraversalSinger {

public static void main(String[] args) {

//创建Singer
Singer s1 = new Singer("周杰伦","晴天");
Singer s2 = new Singer("朴  树","白桦林");
Singer s3 = new Singer("谭维维","如果有来生");

// 创建集合
Collection<Singer> c = new ArrayList<Singer>();

c.add(s1);
c.add(s2);
c.add(s3);

//转为数组
Object[] arr = c.toArray();

//遍历数组
for(Object obj:arr) {
Singer ob = (Singer) obj;
System.out.println(ob.getName()+"-----"+ob.getSongName());
}

}

}


//自定义Singer类
public class Singer {
private String name;
private String songName;

public Singer() {
super();
// TODO Auto-generated constructor stub
}
public Singer(String name, String songName) {
super();
this.name = name;
this.songName = songName;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSongName() {
return songName;
}
public void setSongName(String songName) {
this.songName = songName;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((name == null) ? 0 : name.hashCode());
result = prime * result + ((songName == null) ? 0 : songName.hashCode());
return result;
}

@Override
public String toString() {
return "Singer [name=" + name + ", songName=" + songName + "]";
}

}


2. 用迭代器遍历(重点)

Iterator 中有如下几个方法可以用来获取集合中的元素:

方法名作用
boolean hasNext ( )判断是否有下一个元素
Object next ( )获取下一个元素
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

/*
* 迭代器Iterator遍历String
*/
public class CollectionTraversalIterator {

public static void main(String[] args) {

//创建集合
Collection<String> c = new ArrayList<String>();

//添加元素
c.add("孙燕姿");
c.add("金玟岐");
c.add("范玮琪");

//获取当前集合的迭代器对象
Iterator<String> it = c.iterator();

//如果有下一个,就获取
while(it.hasNext()) {
System.out.println(it.next());
}

}

}


import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

/*
* 用Iterator遍历自定义对象Singer
*/
public class CollectionIteratorSinger {

public static void main(String[] args) {

//创建Singer对象
Singer s1 = new Singer("回音哥","海绵宝宝");
Singer s2 = new Singer("双   笙","葬花吟");
Singer s3 = new Singer("玄   觞","不朽之罪");

//创建集合对象
Collection<Singer> c = new ArrayList<Singer>();
//将自定义对象添加到集合中
c.add(s1);
c.add(s2);
c.add(s3);

//获取集合的迭代器对象
Iterator<Singer> it = c.iterator();

System.out.println("\t\t歌手名字\t\t歌曲");
//如果有下一个就获取

while (it.hasNext()) {
Singer singer = it.next();
System.out.println("\t\t"+singer.getName()+"\t\t"+singer.getSongName());
}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java Collection 集合类
相关文章推荐