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 以了解更多信息。希望你们会喜欢!

? 欢迎大家在评论区提出意见和建议!?

如果你真的从这篇文章中学到了一些新东西,喜欢它,收藏它并与你的小伙伴分享。?最后,不要忘了❤或?支持一下哦。

免责声明:务必仔细阅读

  • 本站为个人博客,博客所转载的一切破解、path、补丁、注册机和注册信息及软件等资源文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。

  • 本站为非盈利性站点,打赏作为用户喜欢本站捐赠打赏功能,本站不贩卖软件等资源,所有内容不作为商业行为。

  • 本博客的文章中涉及的任何解锁和解密分析脚本,仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断.

  • 本博客的任何内容,未经许可禁止任何公众号、自媒体进行任何形式的转载、发布。

  • 博客对任何脚本资源教程问题概不负责,包括但不限于由任何脚本资源教程错误导致的任何损失或损害.

  • 间接使用相关资源或者参照文章的任何用户,包括但不限于建立VPS或在某些行为违反国家/地区法律或相关法规的情况下进行传播, 博客对于由此引起的任何隐私泄漏或其他后果概不负责.

  • 请勿将博客的任何内容用于商业或非法目的,否则后果自负.

  • 如果任何单位或个人认为该博客的任何内容可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明至admin@proyy.com.我们将在收到认证文件后删除相关内容.

  • 任何以任何方式查看此博客的任何内容的人或直接或间接使用该博客的任何内容的使用者都应仔细阅读此声明。博客保留随时更改或补充此免责声明的权利。一旦使用并复制了博客的任何内容,则视为您已接受此免责声明.

您必须在下载后的24小时内从计算机或手机中完全删除以上内容.

您使用或者复制了本博客的任何内容,则视为已接受此声明,请仔细阅读


更多福利请关注一一网络微信公众号或者小程序

一一网络微信公众号
打个小广告,宝塔服务器面板,我用的也是,很方便,重点是免费的也能用,没钱太难了,穷鬼一个,一键全能部署及管理,送你3188元礼包,点我领取https://www.bt.cn/?invite_code=MV9kY3ZwbXo=


一一网络 » java集合框架Collection

发表评论

发表评论

一一网络-提供最优质的文章集合

立即查看 了解详情