Java集合框架(轻易掌握)

Java的集合框架包括很多接口与相应的实现类,框架图如下:

联系我:qq:1457521777

Collection接口:是所有集合类的根接口,Collection<E>
子接口:
List:有序的集合,元素有序存入。
Set:无重复的集合。
Queue:是jdk1.5新加入的,表示队列。
常用方法:
add()
interator()
Map接口:顾名思义:映射关系,和Collection相比 Collection保存一个一个对象,而Map保存的是一对一对的对象(键值对)。
注意Key值不能重复,如果重复,则覆盖。
也是泛型接口 Interface Map<K,V>
方法:

Collection:
List:依然是子接口(有序的)
add(int index,E);
ArrayList LinkedList Vector这三个实现类
Set接口(不重复的)
HashSet TreeSet两个实现类

List:
ArrayList:数组列表,动态数组,连续内存存储
LinkedList 成为链表,可以进行频繁的插入
Vector:矢量集合,多线程同步


List list=new ArrayList();


这种使用方式不常用

常用的是:

List<User> list=new ArrayList<User>();

LinkedList:用起来和ArrayList一样
只是多了一些方法 addFirst(),addLast()等
for循环 和增强for循环以及迭代器;
ArrayList:
存值:add();
取值:get();
Iterator迭代器


Iterator<Book>  iter=list.iterator();
while(iter.hasNext()){
System.out.println(iter.next());
}


一般用的最多的是增强for循环

Set:

HashSet 靠调用equals判断两个对象是否重复

TreeSet可以将集合排序

使用案例:

import java.util.Set;
import java.util.TreeSet;
public class TreeSetExample{
	public static void main(String[] args){
	User user1=new User("张华");
	User user2=new User("张行");
	Set userSet=new TreeSet();
	useSet.add(user1);
	userSet.add(user2);
	Set userSet1=new HashSet();
	useSet1.add(user1);
	userSet1.add(user2);
注意:TreeSet里面的对象必须实现Comparable接口,不然会编译错误
}
}


List与Set测试类

package com.jun.collection;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.Set;
import java.util.TreeSet;

public class ListAndSetTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Book book1=new Book();book1.setBookName("c++");book1.setBookPrice("$130");
		Book book2=new Book();book2.setBookName("java");book2.setBookPrice("$100");
		Book book3=new Book();book3.setBookName("c#");book3.setBookPrice("$150");
		Book book4=book2;
		Book book5=new Book();book5.setBookName("c#");book5.setBookPrice("$150");
		
		
		//ArrayList
		System.out.println("ArrayList案例");
		ArrayList<Book> list=new ArrayList<Book>();
		list.add(book1);
		list.add(book2);
		list.add(book3);
		list.add(book4);
		list.add(book5);
		for(Book book:list){
			System.out.println(book);
		}
		//HashSet
		System.out.println("HashSet案例");
		Set<Book> bookset=new HashSet<Book>();
		bookset.add(book1);
		bookset.add(book2);
		bookset.add(book3);
		bookset.add(book4);//这里book4于book2是一样的book2会被覆盖
		bookset.add(book5);
		
		/*
		 * 这里的book5内容和book3是一样的,但是是两个不同的对象,
		 * 要想内容一样的两个对象不重复的话可以重写equals方法;
		 */
		for(Book book:bookset){
			System.out.println(book);
		}
		System.out.println("TreeSet案例");
		//TreeSet(注意TreeSet使用是Book类必须实现Comparable接口)
		Set<Book> booksett=new TreeSet<Book>();
		booksett.add(book1);
		booksett.add(book2);
		booksett.add(book3);
		booksett.add(book4);
		booksett.add(book5);
		for(Book book:booksett){
			System.out.println(book);
		}
	}

}
Book.java

package com.jun.collection;

//此处必须实现该接口,不然编译不通过
public class Book implements Comparable<Book>{
	@Override
	public String toString() {
		return "Book [bookName=" + bookName + ", bookPrice=" + bookPrice + "]";
	}
	private String bookName;
	private String bookPrice;
	public String getBookName() {
		return bookName;
	}
	public void setBookName(String bookName) {
		this.bookName = bookName;
	}
	public String getBookPrice() {
		return bookPrice;
	}
	public void setBookPrice(String bookPrice) {
		this.bookPrice = bookPrice;
	}
	/*
	 * 实现Comparable接口需要重写该方法根据什么进行排序
	 * 这是TreeSet与HashSet的不同之处
	 */
	public int compareTo(Book arg0) {
		return 1;
		
		//下面以数的价格进行排序
		/*
		 * 由于为了方便我的bookPrice定义为了字符串没法比较,假设为int类型,代码如下:
		if(bookName>arg0.bookPrice){return 1}
		else if(bookPrice<arg0.bookPrice){return -1}
		else {
			return 0;
	
		}
		*/
		}
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result
				+ ((bookName == null) ? 0 : bookName.hashCode());
		result = prime * result
				+ ((bookPrice == null) ? 0 : bookPrice.hashCode());
		return result;
	}
  /*
   * 一下是重写equals方法,此处用eclipse工具自动生成
   * 自动生成方法:点击Source 选择 Generate Hash code() and equals()
   */
	

	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Book other = (Book) obj;
		if (bookName == null) {
			if (other.bookName != null)
				return false;
		} else if (!bookName.equals(other.bookName))
			return false;
		if (bookPrice == null) {
			if (other.bookPrice != null)
				return false;
		} else if (!bookPrice.equals(other.bookPrice))
			return false;
		return true;
	}
	

}












评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值