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

Java基础--Collection方法

2017-11-21 22:20 309 查看

一.API图示



二.常用方法

0.构造函数
// Collection c = new Collection(); //错误,因为接口不能实例化
Collection
c
=
new ArrayList
();//ArrayList是Collection下的一个子类
1.添加功能

boolean add(Object obj)

添加一个元素

boolean addAll(Collection c)

添加一个集合的元素

示例1:
Collection
c
=
new ArrayList
();
System.out.println("add:"+c.add("hello"));//true,add这个方法永远返回true
示例2:添加一个集合
//
创建集合1

Collection
c1
=
new ArrayList
();
c1.add("abc1");
c1.add("abc2");
//
创建集合2

Collection
c2
=
new ArrayList
();
c2.add("abc1");
c2.add("abc2");
// boolean addAll(Collection c):添加一个集合的元素
System.out.println("addAll:"
+ c1.addAll(c2));//将c2内的所有元素添加到c1里面
2:删除功能

void clear()

移除所有元素

boolean remove(Object o)

移除一个元素

boolean removeAll(Collection c)

移除一个集合的元素(是一个还是所有)

示例1:
System.out.println("remove:"
+ c.remove("hello"));
示例2:移除一个集合
//只要有一个元素被移除了,就返回true。
System.out.println("removeAll:"+c1.removeAll(c2));
3:判断功能

boolean contains(Object o)

判断集合中是否包含指定的元素

boolean containsAll(Collection c)

判断集合中是否包含指定的集合元素(是一个还是所有)

boolean isEmpty()

判断集合是否为空

示例1:
示例2:
//只有包含所有的元素,才叫包含
System.out.println("containsAll:"+c1.containsAll(c2));
4:获取功能:迭代器的详细使用方法:迭代器(Iterator)
Iterator<E> iterator()(重点)
(1)在迭代器下的专用方法:
1)Object next():获取元素,并移动到下一个位置。
2)boolean hasNext():如果仍有元素可以迭代,则返回 true。
(2)可能出现的异常
NoSuchElementException:没有这样的元素,因为你已经找到最后了。
5:长度功能

int size()

元素的个数

6:交集功能

boolean retainAll(Collection c)

两个集合都有的元素?思考元素去哪了,返回的boolean又是什么意思呢?

示例:
//假设有两个集合A,B。
//A对B做交集,最终的结果保存在A中,B不变。
//返回值表示的是A是否发生过改变。
System.out.println("retainAll:"+c1.retainAll(c2));
7:把集合转换为数组
Object[] toArray()
  

三.迭代器(Iterator)

1.以图会友



  
2.集合的普通遍历

/**

*
集合的遍历。其实就是依次获取集合中的每一个元素。


* Object[] toArray():把集合转成数组,可以实现集合的遍历

*/

public class
CollectionDemo3
{

public static void
main
(String[] args) {
//
创建集合对象

Collection
c
=
new ArrayList
();
//
添加元素

c.add("hello");
// Object obj = "hello";
向上转型 
// Object[] toArray():把集合转成数组,可以实现集合的遍历
Object[]
objs
= c.toArray();
for
(int
x =
0; x
< objs.length; x++)
{
//
我知道元素是字符串,我在获取到元素的的同时,还想知道元素的长度。

// System.out.println(objs[x] + "---" + objs[x].length());
//
上面的实现不了,原因是Object中没有length()方法

//
我们要想使用字符串的方法,就必须把元素还原成字符串

//
向下转型

String
s =
(String) objs[x];
System.out.println(s
+ "---" + s.length());
}
}
}

3.升级--迭代器遍历

//Iterator iterator():迭代器,集合的专用遍历方式

public class
IteratorDemo
{

public static void
main
(String[] args) {
//
创建集合对象

Collection
c =
new ArrayList();
  
//
创建并添加元素

c.add("hello");
Iterator
it = c.iterator();
// iterator()
实际返回的肯定是子类对象,这里是多态
//
判断是否有下一个元素,有就获取,没有就不搭理它

while
(it.hasNext()) {
// System.out.println(it.next());第一种方式
String
s =
(String) it.next();//第二种,将it强转为String输出
System.out.println(s);
}
}
}

四.遍历练习

/**

*
问题1:能用while循环写这个程序,我能不能用for循环呢?


*
问题2:不要多次使用it.next()方法,因为每次使用都是访问一个对象。


*/

public class
IteratorTest2
{

public static void
main
(String[] args) {
//
创建集合对象

Collection
c =
new ArrayList();
  
//
创建学生对象

Student
s1 =
new Student("林青霞",
27);
Student
s2 =
new Student("风清扬",
30);
  
//
把学生添加到集合中

c.add(s1);
c.add(s2);
  
//
遍历

Iterator
it = c.iterator();
while
(it.hasNext()) {
Student
s =
(Student) it.next();
System.out.println(s.getName()
+
"---" + s.getAge());
  
// NoSuchElementException
不要多次使用it.next()方法,因为在一条语句中多次使用next()方法,每一次调用都会跳转到下个元素

// System.out.println(((Student) it.next()).getName() + "---" + ((Student) it.next()).getAge());
}
  
// for循环改写,这样做效率高,因为将it定义在了for里面,循环结束后,变量立刻销毁
// for(Iterator it = c.iterator();it.hasNext();){
// Student s = (Student) it.next();
// System.out.println(s.getName() + "---" + s.getAge());
// }
}
}

  

//上例使用到的Students类

public class
Student
{

private String
name;

private int
age;

public
Student
() {
super();
}
public
Student
(String
name,
int
age) {
super();
this.name
= name;
this.age
= age;
}
//get,set略
@Override
public String
toString
() {
return
"Student [name=" +
name +
", age=" + age
+ "]";
}
}

相关面试题:

1.数组有没有length()方法呢?字符串有没有length()方法呢?集合有没有length()方法呢?
2.Collection和Collections的区别?
Collection:是单列集合的顶层接口,有子接口List和Set;
Collections:是针对集合操作的工具类,有对集合进行排序和二分查找的方;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java api