Java_集合和迭代器

目录

迭代器iterator

集合Collection

List

Map/HashMap

Hashtable


 

 


迭代器iterator

在Java中,有很多的数据容器,对于这些的操作有很多的共性。Java采用了迭代器来为各种容器提供了公共的操作接口。这样使得对容器的遍历操作与其具体的底层实现相隔离,达到解耦的效果。

主要方法:

1.使用next()获得序列中的下一个元素。

2.使用hasNext()检查序列中是否还有元素。

3.使用remove()将迭代器新返回的元素删除。

 

两种遍历方法:迭代器和foreach:

package com.newcapec.collection;

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

public class Demo1 {
	public static void main(String[] args) {
		Collection list1=new ArrayList();
		list1.add(1);
		list1.add("hhh");
		list1.add(true);
		System.out.println(list1.size());
		//方式一:迭代器遍历
		Iterator il=list1.iterator();
		System.out.println("*************方式一*************");
		while(il.hasNext()) {
			Object object=il.next();
			System.out.println(object);
		}
		//方式二:foreach遍历
		System.out.println("*************方式二*************");
		for(Object o:list1) {
			System.out.println(o);
		}
	}

}

 

 

 


集合Collection

Java_集合和迭代器_第1张图片

主要方法:

boolean add(Object o)添加对象到集合
boolean remove(Object o)删除指定的对象
int size()返回当前集合中元素的数量
boolean contains(Object o)查找集合中是否有指定的对象
boolean isEmpty()判断集合是否为空
Iterator iterator()返回一个迭代器
boolean containsAll(Collection c)查找集合中是否有集合c中的元素
boolean addAll(Collection c)将集合c中所有的元素添加给该集合
void clear()删除集合中所有元素
void removeAll(Collection c)从集合中删除c集合中也有的元素
void retainAll(Collection c)从集合中删除集合c中不包含的元素

 

 

 


List

List接口是Collection接口的子接口,List有一个重要的实现类--ArrayList类,List中的元素是有序排列的而且可重复,所以被称为是序列。

List可以精确的控制每个元素的插入位置,或删除某个位置元素,它的实现类ArrayList底层是由数组实现的。

主要方法:

Capacity 用于获取或设置List可容纳元素的数量。当数量超过容量时,这个值会自动增长。您可以设置这个值以减少容量,也可以调用trin()方法来减少容量以适合实际的元素数目。

Count 属性,用于获取数组中当前元素数量

Item( ) 通过指定索引获取或设置元素。对于List类来说,它是一个索引器。

Add( ) 在List中添加一个对象的公有方法

AddRange( ) 公有方法,在List尾部添加实现了ICollection接口的多个元素

BinarySearch( ) 重载的公有方法,用于在排序的List内使用二分查找来定位指定元素.

Clear( ) 在List内移除所有元素

Contains( ) 测试一个元素是否在List内

CopyTo( ) 重载的公有方法,把一个List拷贝到一维数组内

Exists( ) 测试一个元素是否在List内

Find( ) 查找并返回List内的出现的第一个匹配元素

FindAll( ) 查找并返回List内的所有匹配元素

GetEnumerator( ) 重载的公有方法,返回一个用于迭代List的枚举器

Getrange( ) 拷贝指定范围的元素到新的List内

IndexOf( ) 重载的公有方法,查找并返回每一个匹配元素的索引

Insert( ) 在List内插入一个元素

InsertRange( ) 在List内插入一组元素

LastIndexOf( ) 重载的公有方法,,查找并返回最后一个匹配元素的索引

Remove( ) 移除与指定元素匹配的第一个元素

RemoveAt( ) 移除指定索引的元素

RemoveRange( ) 移除指定范围的元素

Reverse( ) 反转List内元素的顺序

Sort( ) 对List内的元素进行排序

ToArray( ) 把List内的元素拷贝到一个新的数组内

trimToSize( ) 将容量设置为List中元素的实际数目
 

例子: 

package com.newcapec.collection;

import java.io.Serializable;

public class Student implements Serializable{
	private int id;
	private String name;
	private String sex;
	private int age;
	private String phone;
	public Student() {}
	public Student(int id,String name,String sex,int age,String phone) {
		this.id=id;
		this.name=name;
		this.sex=sex;
		this.age=age;
		this.phone=phone;
	}
	public String toString () {
		return this.getId()+"\t"+this.getName()+"\t"+this.getSex()+"\t"+this.getAge()+"\t"+this.getPhone();
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getPhone() {
		return phone;
	}
	public void setPhone(String phone) {
		this.phone = phone;
	}
}
package com.newcapec.collection;

import java.util.ArrayList;
import java.util.List;

public class Demo2 {
	public static void main(String[] args) {
		Student student1=new Student(1,"张三","男",20,"17803850000");
		Student student2=new Student(2,"李四","男",22,"16892340002");
		Student student3=new Student(3,"王五","男",23,"13522374728");
		Student student4=new Student(4,"赵花花","女",19,"18642348990");
		Student student5=new Student();
		student5.setId(5);
		student5.setName("小红");
		student5.setSex("女");
		student5.setAge(21);
		student5.setPhone("17731671123");
		ListstuLists=new ArrayList();
		stuLists.add(student1);
		stuLists.add(student2);
		stuLists.add(student3);
		stuLists.add(student4);
		stuLists.add(student5);	
		System.out.println("id\t姓名\t性别\t年龄\t手机号");
		for(Student s:stuLists) {
			System.out.println(s.toString());
		}
		System.out.println("**************************************");
		System.out.println("id\t姓名\t性别\t年龄\t手机号");
		for(int i=0;i

 

 

 


Map/HashMap

Map 提供了一个更通用的元素存储方法。Map 集合类用于存储元素对(称作“键”和“值”),其中每个键映射到一个值。

Map是一个接口,HashMap是Map的实现类之一。 

 

主要方法: 

1 void clear( )
 从此映射中移除所有映射关系(可选操作)。
2 boolean containsKey(Object k)
如果此映射包含指定键的映射关系,则返回 true。
3 boolean containsValue(Object v)
如果此映射将一个或多个键映射到指定值,则返回 true。
4 Set entrySet( )
返回此映射中包含的映射关系的 Set 视图。
5 boolean equals(Object obj)
比较指定的对象与此映射是否相等。
6 Object get(Object k)
返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null。
7 int hashCode( )
返回此映射的哈希码值。
8 boolean isEmpty( )
如果此映射未包含键-值映射关系,则返回 true。
9 Set keySet( )
返回此映射中包含的键的 Set 视图。
10 Object put(Object k, Object v)
将指定的值与此映射中的指定键关联(可选操作)。
11 void putAll(Map m)
从指定映射中将所有映射关系复制到此映射中(可选操作)。
12 Object remove(Object k)
如果存在一个键的映射关系,则将其从此映射中移除(可选操作)。
13 int size( )
返回此映射中的键-值映射关系数。
14 Collection values( )
返回此映射中包含的值的 Collection 视图。

例子:

package com.newcapec.collection;

import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class Demo3 {
	public static void main(String[] args) {
		Map maps=new HashMap<>();
		maps.put("郑州", "450000");
		maps.put("洛阳", "453500");
		maps.put("濮阳", "451111");
		maps.put("濮阳", "457000");
		maps.put("安阳", "440000");
		//map一个key只对应一个value,相同key会覆盖value数据
		String value=maps.get("濮阳");
		System.out.println("濮阳的邮政编码是:"+value);
		System.out.println(maps.size());
		//maps.remove("洛阳");
		//System.out.println(maps.size());
		System.out.println("*****************Set遍历数据*****************");
		//通过Set拿到key,再通过key拿到value
		Set keys=maps.keySet();//拿到所有key值得集合
		System.out.println("Set方式一:");
		Iterator is=keys.iterator();
		while(is.hasNext()) {
			String key=is.next();
			String v=maps.get(key);//再通过key拿到value
			System.out.println(key+"的邮政编码是:"+v);
		}
		System.out.println("Set方式二:");
		for(String key:keys) {
			String v=maps.get(key);//再通过key拿到value
			System.out.println(key+"的邮政编码是:"+v);
		}
		System.out.println("*****************Collection遍历数据*****************");
		//通过Collection拿到value,也只能拿到value
		Collection vs=maps.values();
		System.out.println("Collection方式一:");
		Iterator vi=vs.iterator();
		while(vi.hasNext()) {
			String result=vi.next();
			System.out.println("邮政编码为:"+result);
		}
		System.out.println("Collection方式二:");
		for(String result:vs) {
			System.out.println("邮政编码为:"+result);
		}
	}
}

 

濮阳的邮政编码是:457000
4
*****************Set遍历数据*****************
Set方式一:
安阳的邮政编码是:440000
洛阳的邮政编码是:453500
濮阳的邮政编码是:457000
郑州的邮政编码是:450000
Set方式二:
安阳的邮政编码是:440000
洛阳的邮政编码是:453500
濮阳的邮政编码是:457000
郑州的邮政编码是:450000
*****************Collection遍历数据*****************
Collection方式一:
邮政编码为:440000
邮政编码为:453500
邮政编码为:457000
邮政编码为:450000
Collection方式二:
邮政编码为:440000
邮政编码为:453500
邮政编码为:457000
邮政编码为:450000
 

 

 

 

 


Hashtable

比HashMap效率稍低,但是线程安全。

用法:和HashMap一样,把HashMap改成Hashtable就行了。注意t是小写= =!!

 

 


 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(项目/实习,JAVA)