Java 集合HashSet TreeSet HashMap ArrayList TreeList

1、体系结构


2、工具类:

package collection;

public class InnerTest {
 private int age;

public final int getAge() {
	return age;
}

public final void setAge(int age) {
	this.age = age;
}

public InnerTest(int age) {
	super();
	this.age = age;
}
public int compareTo(Object obj) {
	return 1;
}
public boolean equals(Object obj) {
	return false;
}
}

package collection;

public class Test {
  private int age;
private String name;
private int num;
public final String getName() {
	return name;
}

public final void setName(String name) {
	this.name = name;
}

public final int getNum() {
	return num;
}

public final void setNum(int num) {
	this.num = num;
}

public Test(int num, String name, int age) {
	super();
	this.age = age;
	this.name = name;
	this.num = num;
}

public Test(int age) {
	super();
	this.setAge(age);
}

@Override
public String toString() {
	return "[num=" + getNum() + "__name="+getName()+"__age="+getAge()+"]";
}

public int getAge() {
	return age;
}

public void setAge(int age) {
	this.age = age;
}

}

3、HashSet常用函数:

 
 
//set:元素不重复、存入对象
package collection;

import java.util.HashSet;
import java.util.function.Consumer;

public class Collection_Set_HashSet {
	
	public static void main(String[] args) {
		HashSet has1=new HashSet();
		has1.add("字符串1");
		has1.add(201);
		has1.add(231.09);
		
		HashSet has=new HashSet();
		has.add("字符串");
		has.add(20);
		has.add(23.09);
		
		//常用方法:
		System.out.println(has.size());
		System.out.println(has.addAll(has1));
		System.out.println(has.size());
		System.out.println(has.add(201));
		System.out.println(has.size());
		System.out.println(has.contains(231.09));
		System.out.println(has.containsAll(has1));
		System.out.println(has.hashCode());
		System.out.println(has.isEmpty());		
		System.out.println(has.remove(201));
		System.out.println(has.contains(201));
		has.clear();
		System.out.println(has.size());

	}

}


4、TreeSet常用函数:

//不重复、且排序
package collection;

import java.util.TreeSet;


public class Collection_Set_TreeSet {

	public static void main(String[] args) {
		TreeSet set=new TreeSet();
		InnerTest in=new InnerTest(4);
		set.add(34);
		set.add(20);
		set.add(200);
		set.add(3);
		set.add(3);
		set.add(3);
		System.out.println(set);
	}
	}

package collection;

import java.util.TreeSet;

import array.Array;

import java.util.*;
public class Collection_Set_TreeSet2 {

	public static void main(String[] args) {
		TreeSet ts=new TreeSet(
				new Comparator() {
					public int compare(Object o1,Object o2) {
						Test t1=(Test)o1;
						Test t2=(Test)o2;
						if(t1.getAge()>t2.getAge()) {
							return 1;							
						}else if(t1.getAge()==t2.getAge()) {
							return 0;
						}else {
							return -1;
						}
					}
				}
				);
		ts.add(new Test(30));
		ts.add(new Test(0));
		ts.add(new Test(3));
		System.out.println(ts);
		
		Object[] ar=ts.toArray();//集合转数组使用方法
		for(Object ar1:ar) {
			System.out.print(ar1+"\t");
		}

	}

}

5、ArrayList:

package collection;


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

public class Collection_List_ArrayList {
	public static void main(String[] args) {
		ArrayList lt=new ArrayList();
		Test t1=new Test(1,"bobo",23);
		Test t2=new Test(2,"clcl",24);
		Test t3=new Test(3,"haha",34);
		Test t4=new Test(1,"mmmm",34);
		lt.add(t1);
		lt.add(t2);
		lt.add(t3);

		System.out.println(lt);
		System.out.println(lt.get(0));//多用
		
		System.out.println(lt.isEmpty());
		System.out.println(lt.size());
		
		System.out.println(lt.indexOf(t1));	//多用
		System.out.println(lt.lastIndexOf(t3));
		

		System.out.println(lt.contains(t1));
		//System.out.println(lt.remove(0));//删下标返回的是下标对应的元素
		System.out.println(lt.contains(t1));
		
		//System.out.println(lt.remove(t3));//删除对象,返回的是true/false
		System.out.println(lt.contains(t3));
		
		
		System.out.println(lt.set(0, t3));
		lt.add(t4);
		//System.out.println(lt.set(1, t2));

		for(int i=0;i<lt.size();i++) {
			Test t=(Test)lt.get(i);
			System.out.println(t);
		}
		
		lt.sort(new Comparator() {//按年龄倒序,年龄相等,按编号升序
			public int compare(Object o1,Object o2) {
				Test t1=(Test)o1;
				Test t2=(Test)o2;
				if(t1.getAge()>t2.getAge()) {
					return -1;							
				}else if(t1.getAge()==t2.getAge()) {
					if(t1.getNum()<=t2.getNum()) {
						return -1;
					}else {
						return 1;
					}
					
				}else {
					return 1;
				}
			}
		});
		System.out.println("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=");
		for(int i=0;i<lt.size();i++) {
			Test t=(Test)lt.get(i);
			System.out.println(t);
		}
		
		System.out.println("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=");	
		Object []a= lt.toArray();
		for(int i=0;i<a.length;i++) {
			Test a1=(Test)a[i];
			System.out.println(a1);
		}
	}
	
}

6、LinkedList:

package collection;

import java.util.LinkedList;
import java.util.List;

public class Collection_List_LinkedList {

	public static void main(String[] args) {
		Test t1=new Test(1,"bobo",23);
		Test t2=new Test(2,"clcl",24);
		Test t3=new Test(3,"haha",34);
		Test t4=new Test(4,"mmmm",34);
		System.out.println("+++++++++++++++++++++++++++当List使用++++++++++++++++++++++++++++++++++++++");		
		LinkedList lt=new LinkedList();
		lt.add(t1);
		lt.add(t2);
		lt.add(t3);
		lt.add(t4);	

		System.out.println(lt.getFirst());
		System.out.println(lt.peekFirst());
		System.out.println(lt.contains(t1));
		System.out.println(lt.removeFirst());
		System.out.println(lt.contains(t1));
		lt.addFirst(t4);

		System.out.println(lt.getFirst());
		lt.clear();
		
			
		System.out.println("++++++++++++++++++++++++++++++当堆栈使用+++++++++++++++++++++++++++++++++++");
		System.out.println(lt.size());		
		lt.push(t1);
		lt.push(t2);
		lt.push(t3);
		lt.push(t4);

		System.out.println(lt.size());	
		System.out.println(lt.pop());
		
	}

}

7、HashMap:

package collection;

import java.util.HashMap;
import java.util.Scanner;
import java.util.Set;

public class Map_HashMap {

	public static void main(String[] args) {
		
		Test t1=new Test(1,"bobo",23);
		Test t2=new Test(2,"clcl",24);
		Test t3=new Test(3,"haha",34);
		Test t4=new Test(1,"mmmm",34);
		
		HashMap hmp=new HashMap();
		hmp.put(100, t1);
		hmp.put("bobo", t2);
		hmp.put('q', t3);
		hmp.put(90.0, t4);
		System.out.println(hmp.size());
		hmp.put(100, t4);//key重复根本插不进去
		System.out.println(hmp.size());
		
		System.out.println(hmp.get(100));
		System.out.println(hmp.get("bobo"));
		System.out.println(hmp.isEmpty());
		System.out.println(hmp.containsKey(1000));
		System.out.println(hmp.containsValue("clcl"));
		
		Set st=hmp.keySet();
		System.out.println(st);

		Set st2=hmp.entrySet();
		System.out.println(st2);
		
		Scanner scan=new Scanner(System.in);
		System.out.println("输入key:");
		int int1=scan.nextInt();
		if(hmp.keySet().contains(int1)) {
			System.out.println(hmp.get(int1));
		}else {
			System.out.println("键值不存在");
		}
		
		System.out.println("输入value:");
		int int2=scan.nextInt();
		if(hmp.containsValue(int2)) {
			System.out.println(hmp.get(int2));
		}else {
			System.out.println("键值不存在");
			
		}
	}	
}
 
 

HashMap四种遍历方法:

package collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map.Entry;
import java.util.Set;

public class Map_HashMap_iterator {
	public static void main(String[] args) {
		shangping sp1=new shangping("H&M",9000);
		shangping sp2=new shangping("H&B",909);
		shangping sp3=new shangping("Z&K",98);
		shangping sp4=new shangping("ZYX",9);
		HashMap<Integer,shangping> hmp=new HashMap<Integer, shangping>();
		hmp.put(1, sp1);
		hmp.put(2, sp2);
		hmp.put(3, sp3);
		hmp.put(4, sp4);
		System.out.println("+++++++++++++++++方式一+++++++++++++++++++++++++++++++++++++");
////////第一种方式//////////////////////////////////////////////////////////////////////////////////	
	    for(Entry<Integer, shangping> enty:hmp.entrySet()) {
	    	System.out.println("Key:"+enty.getKey());
	    	System.out.println("value:"+enty.getValue());
	    }
	    
	    System.out.println("+++++++++++++++++方式二+++++++++++++++++++++++++++++++++++++");
////////第二种方式/////效率极高////以后使用这种遍历方法/////////////////////////////////////////////////////////////////////////	
	    Iterator<Entry<Integer, shangping>> it=hmp.entrySet().iterator();
	    while(it.hasNext()) {
	    	Entry<Integer, shangping> enty=it.next();
	    	System.out.println("Key:"+enty.getKey());
	    	System.out.println("value:"+enty.getValue());
	    }
	    System.out.println("+++++++++++++++++方式三+++++++++++++++++++++++++++++++++++++");
////////第三种方式////////效率极低不要用了//////////////////////////////////////////////////////////////////////////	
	    for(int key:hmp.keySet()) {
	    	System.out.println("Key:"+key);
	    	System.out.println("value:"+hmp.get(key));
	    }
	    System.out.println("+++++++++++++++++方式四+++++++++++++++++++++++++++++++++++++");
////////第四种方式//////////////////////////////////////////////////////////////////////////////////	
	    Set<Entry<Integer, shangping>> set=hmp.entrySet();
	    for(Entry<Integer, shangping> enty:set) {
	    	System.out.println("Key:"+enty.getKey());
	    	System.out.println("value:"+enty.getValue());
	    }
	}

}


8、泛型使用,建议具体的集合使用时都用泛型,这样不仅类型安全,同时消除强制类型转换,以及潜在的性能先收益

package collection;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.TreeSet;

public class Fan_type {

	public static <E> void main(String[] args) {
		
		Test t1=new Test(1,"bobo",23);
		Test t2=new Test(2,"clcl",24);
		Test t3=new Test(3,"haha",34);
		Test t4=new Test(4,"mmmm",34);
		
		ArrayList<Test> alt=new ArrayList<Test>();
		alt.add(t1);
		
		LinkedList<Test> lklt=new LinkedList<Test>();
		lklt.add(t2);
		
		HashSet<Test> set=new HashSet<Test>();
		set.add(t1);
		
		TreeSet<Test> tre=new TreeSet<Test>();
		tre.add(t1);
		
		HashMap<Integer, Test> hmp=new HashMap<Integer, Test>();
		hmp.put(100, t2);
	}

}

9、一个简单的例子,使用接口,集合实现百度跟贴的实例:
主贴实体类:

package collection;


public class Tooltiezi {


	private int num;
	private String title;
	private String content;
	private String time;
	
	public Tooltiezi() {
	}

	public Tooltiezi(int num, String title, String content, String time) {
		super();
		this.num = num;
		this.title = title;
		this.content = content;
		this.time = time;
	}

	public final int getNum() {
		return num;
	}

	public final void setNum(int num) {
		this.num = num;
	}

	public final String getTitle() {
		return title;
	}

	public final void setTitle(String title) {
		this.title = title;
	}

	public final String getContent() {
		return content;
	}

	public final void setContent(String content) {
		this.content = content;
	}

	public final String getTime() {
		return time;
	}

	public final void setTime(String time) {
		this.time = time;
	}
	@Override
	public String toString() {
		return "Tooltiezi [num=" + num + ", title=" + title + ", content=" + content + ", time=" + time + "]";
	}

}
 
 

主贴接口:

package collection;

import java.util.HashMap;
import java.util.List;

public interface ITooltiezi {
	public  abstract void addTiezi(Tooltiezi tiezi);//增
	
	public  abstract void deleteTieziByNum(int num);//删
	public  abstract void deleteTieziByMap(HashMap<Integer,Object> hmp);//删
	
	public  abstract List<Tooltiezi> findTieziByNum(int num);//查
	public 	abstract List<Tooltiezi> findTieziByMap(HashMap<Integer,Object> hmp);//查
	
	public 	abstract void updateTiezi(Tooltiezi tiezi);	//改
}
 
 

主贴接口实现类:

package collection;

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

public final class Tool implements ITooltiezi{
	
	private  ArrayList<Tooltiezi> tieList=new ArrayList<Tooltiezi>();

	public  final ArrayList<Tooltiezi> getTieList() {
		return tieList;
	}

	public  final void setTieList(ArrayList<Tooltiezi> tieList) {
		this.tieList = tieList;
	}
	public  void print1(int num) {
		for(int i=0;i<tieList.size();i++) {
			if(tieList.get(i).getNum()==num) {
				System.out.println(tieList.get(i));
			}	
		}
	}

	@Override
	public  void addTiezi(Tooltiezi tiezi) {
		tieList.add(tiezi);		
	}

	@Override
	public void deleteTieziByNum(int num) {
		for(int i=0;i<tieList.size();i++) {
			if(tieList.get(i).getNum()==num) {
				tieList.remove(tieList.get(i));
			}
		}
		
	}

	@Override
	public void deleteTieziByMap(HashMap<Integer, Object> hmp) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public List<Tooltiezi> findTieziByNum(int num) {
		List<Tooltiezi> lt=new ArrayList<Tooltiezi> ();
		for(int i=0;i<tieList.size();i++) {
			if(tieList.get(i).getNum()==num) {
				lt.add(tieList.get(i));
			}
		}
		return lt;
	}

	@Override
	public List<Tooltiezi> findTieziByMap(HashMap<Integer, Object> hmp) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public void updateTiezi(Tooltiezi tiezi) {
		for(int i=0;i<tieList.size();i++) {
			if(tieList.get(i).getNum()==tiezi.getNum()) {
				tieList.set(i, tiezi);
			}
		}
		
	}

}
 
 

跟帖类:

package collection;

public class Tooltiezi2 {
	
	private Tooltiezi zhutiezi;
	private int num;
	private String title;
	private String content;
	private String time;

	@Override
	public String toString() {
		return "\t\t"+"Tooltiezi2 [num=" + num + ", title=" + title + ", content=" + content
				+ ", time=" + time + "]";
	}

	public Tooltiezi2(Tooltiezi zhutiezi, int num, String title, String content, String time) {
		super();
		this.zhutiezi = zhutiezi;
		this.num = num;
		this.title = title;
		this.content = content;
		this.time = time;
	}

	public final Tooltiezi getZhutiezi() {
		return zhutiezi;
	}

	public final void setZhutiezi(Tooltiezi zhutiezi) {
		this.zhutiezi = zhutiezi;
	}

	public final int getNum() {
		return num;
	}

	public final void setNum(int num) {
		this.num = num;
	}

	public final String getTitle() {
		return title;
	}

	public final void setTitle(String title) {
		this.title = title;
	}

	public final String getContent() {
		return content;
	}

	public final void setContent(String content) {
		this.content = content;
	}

	public final String getTime() {
		return time;
	}

	public final void setTime(String time) {
		this.time = time;
	}

	public Tooltiezi2() {
	}

}

跟帖接口类:

package collection;

import java.util.HashMap;
import java.util.List;

public interface ITooltiezi2 {
	public  abstract void addTiezi(Tooltiezi2 tiezi);//增
	
	public  abstract void deleteTieziByNum(int num);//删
	public  abstract void deleteTieziByMap(HashMap<Integer,Object> hmp);//删
	
	public  abstract List<Tooltiezi2> findTieziByNum(int num);//查
	public 	abstract List<Tooltiezi2> findTieziByMap(HashMap<Integer,Object> hmp);//查
	
	public 	abstract void updateTiezi(Tooltiezi2 tiezi);	//改
}
 
 

跟帖接口实现类:

package collection;

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

public class Tool2 implements ITooltiezi2{
	private static ArrayList<Tooltiezi2> tieList=new ArrayList<Tooltiezi2>();

	public static final ArrayList<Tooltiezi2> getTieList() {
		return tieList;
	}

	public static final void setTieList(ArrayList<Tooltiezi2> tieList) {
		Tool2.tieList = tieList;
	}
	
	public static ArrayList<Tooltiezi2> getT2List(int num){
		ArrayList<Tooltiezi2> tie = new ArrayList<Tooltiezi2>();
		for(int i=0;i<tieList.size();i++) {
			if(tieList.get(i).getZhutiezi().getNum()==num) {
				tie.add(tieList.get(i));
			}
		}
		return tie;
	}
	
	public static void print1(int num) {
		ArrayList<Tooltiezi2> tie =getT2List(num);
		for(int i=0;i<tie.size();i++) {
			System.out.println(tie.get(i));
		}
	}
	
	@Override
	public void addTiezi(Tooltiezi2 tiezi) {
		tieList.add(tiezi);
		
	}

	@Override
	public void deleteTieziByNum(int num) {
		for(int i=0;i<tieList.size();i++) {
			if(tieList.get(i).getNum()==num) {
				tieList.remove(tieList.get(i));
			}
		}
		
	}

	@Override
	public void deleteTieziByMap(HashMap<Integer, Object> hmp) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public List<Tooltiezi2> findTieziByNum(int num) {
		List<Tooltiezi2> lt=new ArrayList<Tooltiezi2> ();
		for(int i=0;i<tieList.size();i++) {
			if(tieList.get(i).getNum()==num) {
				lt.add(tieList.get(i));
			}
		}
		return lt;
	}

	@Override
	public List<Tooltiezi2> findTieziByMap(HashMap<Integer, Object> hmp) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public void updateTiezi(Tooltiezi2 tiezi) {
		for(int i=0;i<tieList.size();i++) {
			if(tieList.get(i).getNum()==tiezi.getNum()) {
				tieList.set(i, tiezi);
			}
		}	
	}
}
 
 

具体操作测试类:

package collection;

public class T1 {

	public T1() {
	}

	public static void main(String[] args) {
		Tooltiezi zhutie1=new Tooltiezi(1,"Java技术","java语言分为JavaME,JavaSE,javaEE,Java的多线程技术相当的考手艺,相当的叼","2018-4-6");
		Tooltiezi zhutie2=new Tooltiezi(2,"JavaEE技术","javaEE技术是java企业记得应用,也成为JavaWEB应用技术,常用于做网站呢,搭建数据库这种","2018-4-6");
		Tooltiezi2 gentie1=new Tooltiezi2(zhutie1,1,"主贴1评论1","介绍很清晰到位","2018-4-7");
		Tooltiezi2 gentie2=new Tooltiezi2(zhutie1,2,"主贴1评论2","这么介绍很不好,没有逻辑","2018-4-8");
		Tooltiezi2 gentie3=new Tooltiezi2(zhutie2,3,"主贴2评论1","介绍很清晰到位","2018-4-7");
		Tooltiezi2 gentie4=new Tooltiezi2(zhutie2,4,"主贴2评论2","这么介绍很不好,没有逻辑","2018-4-8");
		
		Tool to1=new Tool();
		to1.addTiezi(zhutie2);
		to1.addTiezi(zhutie1);			
		Tool2 to2=new Tool2();
		to2.addTiezi(gentie1);
		to2.addTiezi(gentie2);
		to2.addTiezi(gentie3);
		to2.addTiezi(gentie4);
		
		to1.print1(1);
		to2.print1(1);	
		to1.print1(2);
		to2.print1(2);
	}

}





猜你喜欢

转载自blog.csdn.net/cincoutcin/article/details/79823303