java类总结_Java类集总结之一

1)类集:一个动态的对象数组,是对一些实现好的数据结构进行了包装。

类集框架的特性:高性能,对基本类集(动态数组、链接表、树和散列表)的实现是高效率的,所以一般很少需要人工去对这些“数据引擎”编写代码;

框架必须允许不同类型的类集以相同的方式和高度互操作方式工作(对于任何对象所有的操作形式都是一样的,例如想向集合中增加元素,则一定是使

用add()方法,另外类集中的元素类型都是统一的,即一个集合中要么全是A类对象,要么全是B类对象);

类集必须是容易扩展和修改的,为了实现这一目标,类集框架被设计成包含了一组标准的接口。

2)在使用各个类集接口时,如果没有指定泛型,则肯定会出现警告信息,

此时,泛型将被擦除而全部使用Object接收。

3)类集框架本身不受对象数组长度的限制。

4)Collection接口

此接口使用了泛型,可以保证类集操作的安全性,避免发生ClassCastException。

Collection接口是单值存放的最大父接口。

5)在开发中,很少直接使用Collectioin接口进行开发,基本上都是使用其子类接口。

子类接口主要有

List:可以存放重复的内容

Set:不能存放重复的内容,所有重复内容靠hashCode()和equals()两个方法区分

Queue:队列接口

SortedSet:可以对集合中的数据进行排序

6)集合的标准输出:

迭代输出:Iterator接口

只要用到集合的输出操作,就一定使用Iterator接口。

使用Iterator迭代器可以用来查找、删除指定的元素。

7)Collection、Set、List接口都属于单值的操作,即每次只能操作一个对象,

而Map接口每次可以操作一对对象,即二元偶对象,Map中的每个元素都使用key  value

的形势存储在集合中。

8)Collections集合工具类

通过此类可以方便地操作集合,如替换、检索、排序等操作。

9)

1 packagecn.itcast.arraylist.demo;2

3 importjava.util.ArrayList;4 importjava.util.Collection;5 importjava.util.List;6

7 public classArrayListDemo {8

9 public static voidmain(String[] args) {10 List allList = null;//定义List对象

11 Collection allCollection = null;//定义Collection对象

12 allList = new ArrayList();//实例化List对象,只能是String类型

13 allCollection = new ArrayList();///实例化Collection对象

14 allList.add("Hello");//从Collection继承的方法

15      allList.add("Hello");//List可以存放重复的内容

16 allList.add(0,"Worldl");//List扩充的方法

17 System.out.println(allList);//输出:[World,Hello]//18 allCollection.add("Lxh");

19 allCollection.add("wwww");

20 System.out.println(allCollection);

21 allList.addAll(allCollection);//增加一组对象

22 allList.addAll(0, allCollection);

23 System.out.println(allList);

24 }25 }

注:ArrayList是List的子类,直接通过对象的多态性为List实例化

List是Collection的子类,通过对象的多态性有ArrayList实例化。

顺序:Collection(接口)

List(接口)

ArrayList(子类)

注意:集合不是数组:

10)

1 importjava.util.ArrayList;2 importjava.util.List;3

4 public classArrayListDemo03 {5

6 public static voidmain(String[] args) {7 List allList = null;8 allList = newArrayList();9 allList.add("Hello");10 allList.add("wwww");11 System.out.println(allList.size());//输出结果:2

12 System.out.println(allList.get(0));//输出:Hello

13 for(int i=0;i

17 System.out.println("数组输出");18 for(int j=0;j

23 }

11)

Set接口是Collection的子类,没有对Collection进行扩充,但是要求更严格,不能存放重复内容;当存入重复内容时,重复元素只增加一次。

Set接口的实例无法像List接口那样进行双向输出,因为此接口没有提供像List那样的get(int index)方法。

顺序:

Collection(接口)

Set(接口)

SortedSet(接口)、HashSet(子类)、TreeSet(子类)

HashSet里面不能存放重复元素,而且采用散列的存储方式,所以没有顺序,即输出是随机顺序。

12)

1 importjava.util.HashSet;2 importjava.util.Set;3

4 public classHashSetDemo01 {5

6 public static voidmain(String[] args) {7 Set allSet = new HashSet();8 allSet.add("D");9 allSet.add("B");10 allSet.add("C");11 allSet.add("C");12 allSet.add("C");13 allSet.add("A");14 allSet.add("E");15 System.out.print(allSet);16 }17

18 }

13)但是,当HashSet中存放自定义的类,每个对象所在的类必须覆写Object类的hashCode()、equals()、toString() 3个方法。覆写这三个方法之后,才能实现无重复存放。

package cn.itcast.comparable.demo01;

14)

1 importjava.util.HashSet;2 importjava.util.Set;3

4 classPerson {5 privateString name;6 private intage;7 public Person(String name,intage){8 this.name =name;9 this.age =age;10 }11 public booleanequals(Object obj){12 if(this==obj){13 return true;14 }15 if(!(obj instanceofPerson)){16 return false;17 }18 Person p =(Person)obj;19 if(this.name.equals(p.name)&&this.age==p.age){20 return true;21 }else{22 return false;23 }24 }25 public inthashCode(){26 return this.name.hashCode() * this.age;27 }28 publicString toString(){29 return "姓名"+this.name+":年龄"+this.age;30 }31 }32

33 public classRepeatHashSet {34

35 public static voidmain(String[] args){36 Set allSet = new HashSet();37 allSet.add(new Person("张三",20));38 allSet.add(new Person("李四",22));39 allSet.add(new Person("王五",20));40 allSet.add(new Person("赵六",20));41 allSet.add(new Person("孙七",22));42 allSet.add(new Person("王五",20));43 System.out.println(allSet);44

45 }46 }

15)TreeSet类:对输入的数据进行有序排列,即在集合中插入数据时时没有顺序的,但是输出之后数据是有序的,所有TreeSet是排序的子类。

16)

1 importjava.util.Set;2 importjava.util.TreeSet;3

4 public classTreeSetDemo01 {5

6 public static voidmain(String[] args) {7 Set allSet = new TreeSet();8 allSet.add("C");9 allSet.add("C");10 allSet.add("C");11 allSet.add("D");12 allSet.add("A");13 allSet.add("D");14 allSet.add("B");15 allSet.add("E");16 allSet.add("A");17 System.out.print(allSet);//输出结构:ABCDE

18 }19 }

17)如果要将自定义的类存入TreeSet中,TreeSet中的每个对象所在的类必须实现Comparable接口,并且在compareTo方法中指明是按照哪个属性进行比较的。

1 importjava.util.Iterator;2 importjava.util.Set;3 importjava.util.TreeSet;4

5 class Student implements Comparable{6 private intnum;7 privateString name;8 private intscore;9 Student(String name,int num, intscore ){10 this.num =num;11 this.name =name;12 this.score =score;13 }14

15 publicString toString(){16 return num + "……"+name + "……" +score;17 }18 @Override19 public intcompareTo(Student stu) {20 if(this.num>stu.num){21 return 1;22 }else if(this.num

30 public classTreeSetDemo01 {31

32 public static voidmain(String[] args) {33 Set allSet = new TreeSet();34

35 allSet.add(new Student("zhangsan",20,70));36 allSet.add(new Student("wangwu",27,85));37 allSet.add(new Student("lisi",30,62));38 allSet.add(new Student("zhangsan",28,65));39 allSet.add(new Student("sunqi",25,92));40 allSet.add(new Student("wwww",26,65));41

42 Iterator it =allSet.iterator();43 while(it.hasNext()){44 System.out.println(it.next());45 }46 }47 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值