资讯 小学 初中 高中 语言 会计职称 学历提升 法考 计算机考试 医护考试 建工考试 教育百科
栏目分类:
子分类:
返回
空麓网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
空麓网 > 计算机考试 > 软件开发 > 后端开发 > Java

Java高级编程06(集合框架之Collection集合)

Java 更新时间: 发布时间: 计算机考试归档 最新发布

Java高级编程06(集合框架之Collection集合)

集合

什么是集合
       集合与数组一样,可以保存一组元素,并且提供了操作元素的相关方法,使用更方便.
java集合框架中相关接口
       java.util.Collection接口:
       java.util.Collection是所有集合的顶级接口.Collection下面有多种实现类,因此我们有更多的数据结构可供选择.
       Collection下面有两个常见的子接口:
            java.util.List:线性表.是可重复集合,并且有序。
            java.util.Set:不可重复的集合,大部分实现类是无序的。
       这里可重复指的是集合中的元素是否可以重复,而判定重复元素的标准是依靠元素自身equals比较的结果,为true就认为是重复元素。

package collection;
import java.util.ArrayList;
import java.util.Collection;
public class CollectionDemo {
	public static void main(String[] args) {
	Collection c = new ArrayList();
	
	c.add("one");
	c.add("two");
	c.add("three");
	c.add("four");
	c.add("five");
	System.out.println(c);
	
	int size = c.size();
	System.out.println("size:"+size);
	
	boolean isEmpty = c.isEmpty();
	System.out.println("是否为空集:"+isEmpty);
	
	c.clear();
	System.out.println(c);
	System.out.println("size:"+c.size());//0
	System.out.println("是否为空集:"+c.isEmpty());
	}
}

集合与元素equals方法相关的方法

package collection;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;

public class CollectionDemo2 {
	public static void main(String[] args) {
	// Collection c = new ArrayList();
	Collection c = new HashSet();
	c.add(new Point(1,2));
	c.add(new Point(3,4));
	c.add(new Point(5,6));
	c.add(new Point(7,8));
	c.add(new Point(1,2));
	
	System.out.println(c);
	Point p = new Point(1,2);
	
	boolean contains = c.contains(p);
	System.out.println("包含:"+contains);
	
	c.remove(p);
	System.out.println(c);
	}
}

集合存放的是元素的引用
       集合只能存放引用类型元素,并且存放的是元素的引用。

package com.scy.array;

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

public class CollectionDemo3 {
	
	public static void main(String[] args) {
			Collection c = new ArrayList();
			Point p = new Point(1,2);
			c.add(p);
			System.out.println("p:"+p);//p:Point [x=1, y=2]
			System.out.println("c:"+c);//c:[Point [x=1, y=2]]
			
			p.setX(2);
			System.out.println("p:"+p);//p:Point [x=2, y=2]
			System.out.println("c:"+c);//c:[Point [x=2, y=2]]
	}
}


集合间的操作
       集合提供了如取并集,删交集,判断包含子集等操作。

package com.scy.array;

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


public class CollectionDemo4 {

	public static void main(String[] args) {

		//Collection c1 = new ArrayList();
		Collection c1 = new HashSet();//不可重复元素
		c1.add("JAVA");
		c1.add("C++");
		c1.add("C语言");
		c1.add("Python");
		System.out.println("c1:"+c1);
		
		Collection c2 = new ArrayList();
		c2.add("android");
		c2.add("ios");
		c2.add("JAVA");
		System.out.println("c2:"+c2);
		
		
		boolean b1 = c1.addAll(c2);
		System.out.println(b1);
		System.out.println("c1:"+c1);
		System.out.println("c2:"+c2);
		
		Collection c3 = new ArrayList();
		c3.add("C++");
		c3.add("JAVA");
		c3.add("Python");
		System.out.println("c3:"+c3);
		
		
		boolean b2 = c1.containsAll(c3);
		System.out.println(b2);
		
		
		c1.removeAll(c3);
		System.out.println("c1:"+c1);
		System.out.println("c3:"+c3);
	}
}

集合的遍历
       Collection提供了统一的遍历集合方式:迭代器模式
       Iterator iterator()
       该方法会获取一个用于遍历当前集合元素的迭代器.
       java.util.Iterator接口
       迭代器接口,定义了迭代器遍历集合的相关操作。
       不同的集合都实现了一个用于遍历自身元素的迭代器实现类,我们无需记住它们的名字,用多态的角度把他们看做为Iterator即可。
       迭代器遍历集合遵循的步骤为:问,取,删.其中删除元素不是必要操作

package com.scy.array;

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

public class IteratorDemo {
	public static void main(String[] args) {
		Collection c = new ArrayList();
		c.add("one");
		c.add("two");
		c.add("three");
		c.add("four");
		c.add("five");
		System.out.println(c);
		//获取迭代器
		Iterator it = c.iterator();
		
		while(it.hasNext()){
			String str = (String)it.next();
			System.out.println(str);
		}
		System.out.println(c);
	}
}

迭代器遍历过程中不得通过集合的方法增删元素

package com.scy.array;

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

public class IteratorDemo2 {
	public static void main(String[] args) {
		Collection 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);
		//获取迭代器
		Iterator it = c.iterator();
		//迭代器提供的相关方法:
		//boolean hasNext()
		
		while(it.hasNext()){
			String str = (String)it.next();
			System.out.println(str);
			if("#".equals(str)){
				
				// c.remove(str);
				
				it.remove();
			}
		}
		System.out.println(c);
	}
}

增强型for循环
JDK5之后推出了一个特性:增强型for循环

  • 也称为新循环,使得我们可以使用相同的语法遍历集合或数组
  • 语法:

for(元素类型 变量名 : 集合或数组){
              循环体
}

package com.scy.array;

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


public class NewForDemo {
	public static void main(String[] args) {
		//创建字符串数组
		String[] array = {"one","two","three","four","five"};

		//传统的for循环遍历数组
		for(int i=0;i 
泛型 

JDK5之后推出的另一个特性。
泛型也称为参数化类型,允许我们在使用一个类时指定它里面属性的内容,方法参数或返回值类型。

  • 泛型被广泛应用于集合中,用来指定集合中的元素类型。
  • 支持泛型的类在使用时如果未指定泛型,那么默认就是Object。
	
package com.scy.array;

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

public class NewForDemo {
	public static void main(String[] args) {
		//创建集合指定泛型为String类型
		Collection coll = new ArrayList();
		//给集合添加元素
		coll.add("one");//编译器会检查add方法的实际参数是否为String类型。
		coll.add("two");
		coll.add("three");
		coll.add("four");
		coll.add("five");
		//coll.add(123);//编译不通过 类型不符
		
		//迭代器遍历
		//迭代器也支持泛型,指定的与遍历的集合指定的泛型一致即可。
		Iterator iterator = coll.iterator();
		while(iterator.hasNext()) {
			//编译器在编译代码时会根据迭代器指定的泛型补充造型代码
			String str = iterator.next();//获取元素是无需在强制类型转换
			System.out.println(str);
		}
		System.out.println("=====5 end=========");
		
		//新循环的快捷键  输入 fore  alt + /  回车即可  会自动遍历最靠近当前代码的集合
		for (String string : coll) {
			System.out.println(string);
		}
	}
}
转载请注明:文章转载自 http://www.konglu.com/
本文地址:http://www.konglu.com/it/324489.html
免责声明:

我们致力于保护作者版权,注重分享,被刊用文章【Java高级编程06(集合框架之Collection集合)】因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,转载此文是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!

我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2023 成都空麓科技有限公司

ICP备案号:蜀ICP备2023000828号-2