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);
}
}