java集合框架Collection
- java集合框架
- java.util.Collection接口
- Collection接口中定义了所有集合都要具备的功能,它也是所有集合的顶级接口。
- Collection下面有几种不同集合的分类,常见的两个:
1.java.util.List:List接口表示的是线性表,是有序的且可以存放重复元素的集合 *
2.java.util.Set:Set接口表示的是不可重复的集合
这里指的重复是元素是否可以重复,而判断重复的标准是根据元素自身equals比较。
public static void main(String[] args) {
Collection c = new ArrayList();
/*
* boolean add(E e)
* 向当前集合中添加给定元素,成功添加后返回true
*/
c.add("one");
c.add("two");
c.add("three");
c.add("four");
c.add("five");
System.out.println(c);
/*
* int size()
* 返回当前集合的元素个数
*/
int size = c.size();
System.out.println("size:"+size);
/*
* boolean isEmpty()
* 判断当前集合是否为空集
*/
boolean isEmpty = c.isEmpty();
System.out.println("isEmpty:"+isEmpty);
/*
* void clear()
* 清空集合
*/
c.clear();
System.out.println(c);
System.out.println("size:"+c.size());
System.out.println("isEmpty:"+c.isEmpty());
}
boolean contains(E e)
- 判断当前集合是否包含给定元素,是否包含的依据是是否
与集合现有元素存在equals比较 为true的情况。
public static void main(String[] args) {
Collection c = new ArrayList();
c.add(new Point(1,2));
c.add(new Point(3,4));
c.add(new Point(5,6));
c.add(new Point(7,8));
System.out.println(c);
Point p = new Point(1,2);
boolean contains = c.contains(p);
System.out.println("包含:"+contains);
/*
* 删除元素也是依靠元素equals比较进行删除的,如果集合有重复元素则
* 只删除一次。
*/
c.remove(p);
System.out.println(c);
}
集合只能放引用类型元素,并且存放的也是元素的引用(地址)
public static void main(String[] args) {
Collection c = new ArrayList();
Point p = new Point(1,2);
c.add(p);
System.out.println("p:"+p);
System.out.println("c:"+c);
p.setX(2);
System.out.println("p:"+p);
System.out.println("c:"+c);
}
运行结果为
集合间的一些操作:
public static void main(String[] args) {
Collection<String> c1 = new ArrayList<>();
// Collection c1 = new HashSet();//HashSet是由HashMap实现的
c1.add("java");
c1.add("c++");
c1.add(".net");
System.out.println("c1:"+c1);
Collection<String> c2 = new ArrayList<>();
c2.add("ios");
c2.add("android");
c2.add("java");
System.out.println("c2:"+c2);
/*
* addAll方法是取并集操作,会将给定集合中的所有元素添加到当前集合中。
* 如果当前集合是Set集合,重复元素不能被再次添加进集合。
*/
c1.addAll(c2);
System.out.println("c1:"+c1);
Collection<String> c3 = new ArrayList<>();
c3.add("c++");
c3.add("android");
c3.add("php");
System.out.println("c3:"+c3);
/*
* containsAll用于判断当前集合是否包含给定集合中的所有元素
*/
boolean contains = c1.containsAll(c3);
System.out.println("全包含:"+contains);
/*
* removeAll用于删除当前集合中与给定集合的共有元素。给定集合中的元素
* 不受影响。
*/
c1.removeAll(c3);
System.out.println("c1:"+c1);
System.out.println("c3:"+c3);
}
运行结果:
遍历集合
-
Iterator iterator
-
该方法可以获取一个用于遍历当前集合元素的迭代器
-
java.util.Iterator接口,迭代器接口
迭代器接口规定了使用迭代器方式办理集合的相关操作,不同的集合都提供了对应的 实现类,我们无需记住这些具体实现类的名字,只要当作是Iterator看即可(多态),然后根据定义的相关操作遍历即可。 -
迭代器遍历集合遵循的原则是:问,取,删
其中删除元素不是必要操作。
public static void main(String[] args) {
Collection<String> c = new ArrayList<>();
c.add("one");
c.add("#");
c.add("two");
c.add("#");
c.add("three");
c.add("#");
c.add("four");
c.add("#");
c.add("five");
System.out.println(c);
@SuppressWarnings("rawtypes")
Iterator it = c.iterator();
/*
* boolean hasNext()
* 通过迭代器判断集合是否还有下一个元素可以遍历
*/
while(it.hasNext()) {
/*
* E next()
* 通过迭代器遍历集合下一个元素
*/
String str =(String)it.next();
if("#".equals(str)) {
//迭代器要求在遍历的过程中不得通过集合方法增删元素,否则抛异常
// c.remove(str);
//迭代器的remove方法可以将本次next()遍历的元素从集合中删除
it.remove();
}
System.out.println(str);
}
System.out.println(c);
}
结果如下
我真的希望你能从这篇文章中得到一些有用的东西。这里汇总了我的全部原创及作品源码:GitHub 如果大家能给我的 Github 存储库上添一些星星就更好了😊。
我已经写了很长一段时间的技术博客,这是我的一篇 java集合框架Collection教程。我乐于通过文章分享技术与快乐。您可以访问我的博客主页: 华为云-海拥、我的个人博客:haiyong.site 以了解更多信息。希望你们会喜欢!
💌 欢迎大家在评论区提出意见和建议!💌
如果你真的从这篇文章中学到了一些新东西,喜欢它,收藏它并与你的小伙伴分享。🤗最后,不要忘了❤或📑支持一下哦。
- 点赞
- 收藏
- 关注作者
评论(0)