Java基础(集合)

集合

集合大概理论:

List接口
 ArrayList:实现了可变的数组,在内存中分配连续的空间,便利元素和随机访问元素的效率比较高。
    LinkedList:采用链表储存方式,插入,删除元素时效率比较高! 
set接口
 HashSet:唯一,重复,直接不能储存进去!无序的,是采用哈希吗储存的! 

Collection 是层次结构根接口

List: 有序(存入和取出的顺序一致),元素都有索引(角标),储存的元素可以重复。(怎么存的元素,就怎么吧元素取出来)       ArrayList是List的子接口。

set: 元素不能重复,储存的元素是无序的。


一些collection允许有重复元素,而另一些则不允许。 一些collection是有序的,而另一些则是无序的。

由于collection是接口,所以不能new他的对象

语法:

 Collection collection  = new Collection();
这种是语法错误的,因为 Collection 是接口,所以不能new,因为毫无意义。不能实例化
那么我们怎么new了? 此时我们就要找他的实现对象
我们查找API 发现colletion有很多实现子类 extends collection 

  • 所有已知实现类: AbstractCollection, AbstractList, AbstractQueue, AbstractSequentialList, AbstractSet, ArrayBlockingQueue, ArrayDeque, ArrayList, AttributeList, BeanContextServicesSupport, BeanContextSupport, ConcurrentLinkedQueue, ConcurrentSkipListSet, CopyOnWriteArrayList, CopyOnWriteArraySet, DelayQueue, EnumSet, HashSet, JobStateReasons, LinkedBlockingDeque, LinkedBlockingQueue, LinkedHashSet, LinkedList, PriorityBlockingQueue, PriorityQueue, RoleList, RoleUnresolvedList, Stack, SynchronousQueue, TreeSet, Vector

Collection的使用常见方法

1:添加。 boolean add(Object obj);

boolean addAll(colecton coll);

吧这个引用类型元素添加到调用此方法的引用。


2:删除。 boolean remvoe(Object obj);

boolean removeAll(collecton coll);

删除重复的元素,保留不重复的元素


3:判断 boolean contains(Object obj);

boolean contains(collection coll); 如果列表包含指定 collection 的所有元素,则返回 true。

boolean isEmpty();判断集合中是否有元素


4:获取 int size();

iterator iterator();取出元素的方式,迭代器


5:其他 boolean retainAll(collection coll);取交集。

Object[]toString();将集合转成数组。

语法:
 //储存数据
         *ollection collection = new ArrayList();
           collection.add(100);
           collection.add("哈哈");
           collection.add(10.1);
           collection.add(false);
           System.out.println("他的长度是"+collection.size()); 

这个是打印他的这个集合的长度


toArray() 关键词是吧集合的内容全部转为数组;


 public class Demo3 {
     public static void main(String[]args){
     Collection collection = new ArrayList();
     Demo demo = new Demo(null,0);//此时这句话可以不写因为在集合里面new了这个类的无参构造。
     collection.add(new Demo("哈哈哈",10));
     collection.add(new Demo("嘻嘻嘻",30));
     collection.add(new Demo("啦啦啦",80));
     System.out.println("他的长度是"+collection.size());  

     Object[] obj = collection.toArray();    //因为ArrayList是实现Collection子类所以他们都是基于OBject超类
     for(int i =0;i<collection.size();i++){
        Demo demo =(Demo)obj[i]; //吧每次collection集合遍历的地址都给了demo对象名
       System.out.println(demo.getname);
       System.out.println(demo.getin);
       }
     }
 }

 class Demo{

    private String name; // private String [] name;
         private int in;//

    public Demo(String ing, int in) {
     this.ing = ing;
     this.in = in;
 }
 public String getname(){
       return name;
    }
    public void setname(String name){
       this.name = name;
    }
    public int getin(){
       return in;
    }
    public void setin(int in){
       this.in = in;
    }
 } 

以下new出来的是错误的,因为name 和 in 是普通值,而在遍历数组的时候,是无法加载的,除非 private String [] name; private int[] in;

或者

 System.out.println(demo.getname());
 System.out.println(demo.getin()); 

后面加上();




addAll()方法

用于:添加指定 collection 中的所有元素到此列表的结尾,顺序是指定 collection 的迭代器返回这些元素的顺序。

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

  class Demo1{
    public static void main(String[]args){
    Collection collection = new Arraylist();
    Collection collection1 = new Arraylist();

    collection.add("1");
    collection.add("2");
    colelction.add("3");

    collection1.add("2");
    collection1.ada("4");
    collection1.add("4");

    collection.addAll(collection1);
  //这句代码是将这个colleciton的元素添加到colleciton1里面
    System.out.println(collection);

      } 
  } 



removeAll()

用于:移除此 collection 相同的元素(重复的元素),保留不相同的元素(不重复的元素);

 publc class Demo{
   public static void main(String[]args)[

    Collection collection = new ArrayList();
    Collection collection1  = new ArrayList();

    collection.add("1");
    collection.add("2");
    collection.add("3");

    collection1.add("1");
    collection1.add("2");
    collection1.add("6");

 //   System.out.println(collection.addAll(collection1));//因为removeAll是boolean,所以返回的是布尔类型
    collection.addAll(collection1);
    System.out.println(collection);

    collection.removeAll(colleciotn1);
    System.out.println(colelciton);
    //这两句代码是 两个引用类型,在堆内存储存一样的元素时候,那么全部去掉,只留下两个堆内存中不重复的元素

    }
   } 


containsAll

如果此colleciton 包含了全部的colleciton的元素,则返回true,否则返回false

 public class Demo{
  public static void main(String[]args){
   Collection collection = new ArrayList();
   Collection collection1 = new ArrayList();

   collection.add("1");
   collection.add("2");

   collection1.add("1");
   colelction1.add("2");

   collection.containsAll(collection1);
   //containsAll 如果这个包括了全部的元素,那么返回true否则就是false
       }
 } 


retainAll()

用于:如果集合colleciton 去交集,删除collection不相同的元素,保留相同的元素,和remove相反

 public class dEMO {
public static void main(String[]args){
List list = new ArrayList();
List list1 = new ArrayList();
  yi(list,list1);


}
public static void yi(List<String> list,List list1){
    list.add("1");
    list.add("2");
    list.add("3");

    list1.add("6");
    list1.add("2");
    list1.add("3");

    boolean a = list.retainAll(list1);
    System.out.println(list1+"+"+list);
    System.out.println(a);
 //取交集,保留相同的元素,干掉不相同的元素

} 

}

迭代器接口 Iterator()

方法摘要:


hasNext() 如果仍有元素迭代,则返回true

next() 返回迭代的下一个元素

remove() 从迭代器指向的collection中移除迭代器返回的最后一个元素(可选操作)


一般用来遍历集合内容的

返回在此collection的元素上进行迭代的迭代器。关于元素返回没有任何保证 (除非此collection是某个能提供保证顺序的类实列)。

 Iterator iterator = demo.iterator();
  //这句代码是调用集合迭代器方法,为了获取集合的迭代器对象 

语法如下:

 class Demo{
public static void mian(String[]args){
Collecton collection = new ArrayList();
collection.add(new Demo2("哈哈",123));
collection.add(new Demo2("嘻嘻嘻",1234));
collection.add(new Demo2("啦啦啦",11111));

System.out.println(collection.size());//size是显示集合的长度的

Iterator iterator = collection.iterator();
//collection.iterator(); 这句代码是 调用集合的迭代器方法,是为了获取集合中的迭代器对象
//Iterator iterator 这句代码是 ,我拿到了迭代器的对象

 while(iterator.hasNext){
 //hasNext是条件判断,则next给hasNext返回是true还是false ,用于查看下一个有没有元素

 Object obj = iterator.next();//这句话可以直接写成 Demo2 demo = (Demo2)iterator.next();
 //用于:返回iterator的boolean的类型,吧每次遍历的指针给你,每次循环,达到实现属性类使用


 //因为是new Demo2这个类的,所以我们get来取这个类的属性

  Demo2 demo = (Demo2)obj;//因为在集合中我们new的没有指针,所以必须来遍历指针指引这个属性类

 System.out.println(demo.geting());
 System.out.println(demo.getin);
 } 


迭代器与集合错误特点:

在迭代器操作过程中,不能用集合来操作删除,添加,只能打印。

不能迭代器和集合同时对元素进行修改,添加,和删除。

 class Demo{
  public static void main(String[]args){
    List list = ArrayList();
       yi(list);
   } 
  public static void yi(List list){
     list.add("1");
     list.add("2");
     list.add("3");
     Iterator It = list.iterator();
     while(It.hasNext){
     Object obj = It.next();
     if(obj.equals("2")){
      list.add("55");
    //在这一步把list集合元素给了迭代器,在迭代器过程中,突然使用集合来操作元素,所以报错!
    //吧集合元素给了迭代器,要不集合操作,要不迭代器操作,否则出现异常报错!
          }
       }
     }
 } 

如果坚决用集合迭代器来增加元素,那么我们就用迭代器的子类(listIterator)的方法实现

语法如下:

 class Demo(
 public static void main(String[]args){
 List list = new ArrayList();
  yi(list);
  System.out.println(list);

    }
  public static void yi(List list){
    list.add("1"); 
    list.add("2");
    list.add("3");
    ListIterator It = list.iterator();
   while(It.hasNext()){
  // System.out.println(It.next());//此时不能这样,因为next是迭代器的返回,如果有两个迭代器操作时,除了此内存操作,会报错!
   Object obj = It.next();
    if(obj.equals.("3")){  //如果里面有这个字符串,那么进来添加一个
       It.add("4");  
       } 
     }

     }
} 
用for循环遍历这个集合迭代器元素:、
语法如下:
 for(Iterator ii = collecton.iterator(); ii.hasNext(); ){
  Demo2 dem  =(Demo2) ii.next();
//迭代器获取到元素的地址,查看堆内存中是否为空,返回给迭代器条件判断,然后吧每次遍历的地址值给了这个对象名
   System.out.println(dem.geting());
 }

}
class Demo2{
   private Stirng ing;
   private int in;

   public Demo2(){}

   public Demo2(String ing,int in){
   this.ing = ing;
   this.in = in;

   }
   public String geting(){
     return ing;
   }
   public void seting(String ing){
    this.ing = ing;
   }
   public int getin(int in){
    return in;
   }
   public void setin(int in){
   this.in = in;
   } 









Collecton接口子类List

List接口:特有的常见方法,有一个共性特点就是都可以操作角标

Vector:内部是数组数据结构,是同步的。增删,查询很慢。

ArrayList:内部是数组数据结构,是不同步的,替代了Vector。查找元素很快,删除其中,则坐标移动,一动则动全身,因为他储存方式是数组,增删,其动全部坐标,删除也是。

LinkedList:内部是链表数据结构,是不同步的,增删元素的速度很快

以下是常见方法区

1. 添加:

void add(index,element);

void add(index,collecton);

2.删除:

Object remove(index);

3.修改:

Object set(index,element);

4.获取:

Object get(index);

int indexOf(object);

int lastIndexOf(object);

List subList(fron,to);


增加元素:void add(index,collecton):获取元素的角标,来添加元素

语法如下:

class Demo{
 public static void main(String[]args){
 List list = new ArrayList();   
     yi(list);//调用他的引用
   } 
public static void yi(List list){//获取List 的list对象名
   list.add("abc1");
   list.add("abc2");
   list.add("abc3");    

   list.add(1,"abc5");
  //这句话就是在集合1角标哪里直接插入
    }  
} 

删除元素: Object remove(index):在remove()参数括号里面填写哪个坐标,就删除哪个元素。

语法如下:

 class Demo{
publc static void mian(String[]args){
  List list = new ArrayList();
   yi(list);     
  }
public static void yi(List list){
    list.add("abc");
    list.add("aaa");
    list.add("add");

    System.out.println(list.remove(2));
  //这句话就是用List调用自身的方法,remove删除坐标2的元素。
    }
 } 

修改元素:Object set(index,”asdf”);在指定坐标,修改元素

语法如下:

 class Demo{
    public static void main(String[]args){
     List list = new ArrayList();
        yi(list);
    }
     public static void yi(List list){
       list.add("a");
       list.add("b");
       list.add("c");
       System.out.println(list.set(1,"ha"))
  //吧指定坐标的元素修改成当前元素。
     } 
   } 

get(int index):这种方法用于返回列表中指定位置的元素。

语法如下:

 class Demo{
     public static void main(String[]args){

     Collecetion colleciotn = new ArrayList();

     collection.add(new Demo1("哈哈",123));
     collection.add(new Demo1("我是",11));
     System.out.println(collection.size());

     for(int i = 0;i<collection.size();i++){
      List list = (List)collection;
       Demo1 demo  =(Demo1) list.get(i);
       //为什么要用List了?因为只有List是colleection的子类,但是List这个接口有get方法,用来获取元素
              }

           }
      }

      class Demo1{
      private String ing ;
      private int in;

      Demo1(){}

      Demo1(Stirng ing,int in){
      this.ing = ing;
      this.in = in;
      }
      public String geting(){
      return ing;
      }
      public void seting (String ing){
      this.ing = ing;
      }
      public int getin(){
      return in;
      }
      public void setin(int in){
      this.in = in;
      }
    } 






LinkedList();类 来自List接口。

addFirst()方法:     用于来逆序集合的元素

增加头部元素:

 //此段代码不能执行!只为参考不常用的方法!
class Demo{
 public static void main(String[]args){

 LinkedList linkedlinst = new LinkedLint();

  yi(linkedlist);
    } 
 public static void yi(LinkedList linkedlist){

   linkedlist.addFirst("1");
   linkedlist.addFirst("2");
   linkedlist.addFirst("3");
   linkedlist.addFirst("4");
   //删除迭代器的头一个元素,remove是删除,First是头部
  System.out.println(removeFirst);
  //这句代码是 删除头部。

  //get是获取元素,
System.out.println(getFirst());
 //获取几个第一个元素

 //因为都是collection的接口的子类,我们用LinkedList调用collection迭代器  
    Iterator It = linkedlist.iterator(); 
    while(It.hasNext()){
      System.out.println(It.next());
      }
    }
 } 

Collection接口子类:

set接口:元素不可重复,是无序的。继承了collection接口,因此拥有collection方法。

set接口有两个子类比较常用。HashSet,TreeSet。

Hashset;内部数据结构是哈希表,是不同步的:此类实现set接口,它不保证set的迭代顺序,特别是他不保证该顺序恒久不变,此类允许使用null元素。所以存储元素的时候,使用的元素的hashCode方法来确定位置,如果位置相同,在通过元素的equals来确定是否相同      储存方式就是:  用hashcode方法确定元素的地址,然后在用equals判断元素的内容

HashSet类:

HashSet方法:

 class Demo{
public static void main(string[]args){
   HashSet hashset = new HashSet();
  hashset.add("1");
  hashset.add("2");
  hashset.add("3");
  hashset.add("4");  
  Iterator It = hashset.iterator();
  while(It.hasHext()){
    System.out.println(It.next());
     } 
  }
}
  //打印出来不保证迭代顺序,如果有重复元素,只打印一个
  //因为HashSet类是根据哈希算法的元素来存储的。用于查找速度快。不能重复元素,是因为他根据算法来储存的,所以直接覆盖了当前的相同的元素。 

LinedHashSet方法:

 class Demo{
 public static void main(String[]args){
  HashSet linkedHashSet = new LinkedHashSet();
    linkedHashSet.add("1");
    linkedHashSet.add("2");
    linkedHashSet.add("3");
    linkedHashSet.add("1");
    linkedHashSet.add("2");
    Iterator It = linkedHashSet.iterator();
    while(It.hasNext()){
        System.out.println(It.next(););
          } 
    }
 }
//LinkedHashSet();方法是元素有序,只唯一。因为他是哈希列表,链接列表实现。 

TreeSet:可以对Set集合中的元素进行排序,是不同步的。

基本语法如下:
 public class tersetDemo {
 public static void main(String[]args){
     TreeSet treeset  =new TreeSet();
     treeset.add(new Demo("嘻嘻",19));
     treeset.add(new Demo("哈哈",12));
     treeset.add(new Demo("啦啦",42));
     treeset.add(new Demo("呵呵",49));
     treeset.add(new Demo("突突",13));

     for(Iterator It = treeset.iterator();It.hasNext();){

      System.out.println(It.next());
          }

      }
 }

class Demo{
private String name;
private int in;
Demo(){

}
Demo(String name,int in){
    this.name = name;
    this.in = in;
}
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
public int getIn() {
    return in;
}
public void setIn(int in) {
    this.in = in;
  }

} 
//这段代码会报异常: 
  Exception in thread "main" java.lang.ClassCastException: Demo1.Demo cannot be cast to java.lang.Comparable
at java.util.TreeMap.put(TreeMap.java:542)
at java.util.TreeSet.add(TreeSet.java:238)
at Demo1.tersetDemo.main(tersetDemo.java:8) 














TreeSet
1,元素不可重复
2,可以按照自然顺序排序
3,如果排序的是引用数据类型,需要实现Comparable接口
此接口需要重写compareTo()方法,此方法规定,如果该对象小于,等于或大于指定对象,则分别返回负整数,零或正整数。
正确的TreeSet方法: 数字排序
class Demo{
public static void main(String[]args){
  set set =new TreeSet();
  set.add(new Demo1("张三",12));
  set.add(new Demo1("李四",11));
  set.add(new Demo1("王麻子",213));
  for(Iterator It = set.iterator();It.hasNext()){
    Demo1 demo = (Demo1)It.next();
  System.out.println(demo.getname());  
     }

 } 
class Demo1 implements Comparable{        
 //实现Comparable接口,调用接口的compareTo方法;

 private String name;
 private int in;
 Demo1(){
 }
 Demo1(String name,int in){
 this.name = name;
 this.in = in;
 }
 public String getName(){
   return name;
 }
 public void setnName(String name){
   this.name = name;
 }
 public int getIn(){
   return in;
 }
 public void setIn(int in){
   this.in = in;
 }
 //需要重写Object的toString方法; 
 public String toString(){
    return name +";"+ in;
 }

 //调用接口的方法
 public int compareTo(Object o)
   Demo1 demo = (Demo1)o;
   if(this.in>demo.in){
      return 1;
   }if (this.in<demo.in){
      return -1;
   }else{
      return 0;
   }
  //这样就是排序他的数字属性这个。
} 

如果全部返回的是1,那么按顺排序。

 public int compareTo(Object o) {
   Demo dd =(Demo)o;
   if(this.in<dd.in ){
      return 1;
   }if (this.in>dd.in){
      return 1; 
   }else{
       return 1;
   }
 //在方法里面返回的负数和正数来排序的。

}
} 

字符串排序

 class treesetDemo1{
 public static void main(String[]args){
  TreeSet treeset =new TreeSet();
  treeset.add("星期一");
  treeset.add("星期二");   
  treeset.add("星期三");
  treeset.add("星期四");
  Iterator It = treeset.iterator();

    }
}
class Demo3{
 private String name;
 Demo3(){
 }
 Demo3(String name){
  this.name = name;
 }
 public String getName(){
    return name;
}
public void setName(String name){
    this.name = name;
}
public String toString (){

}


 } 











Map:

一次添加一对元素,collection一次添加一个元素。

Map也称为双列结合,collection集合称为单列集合。

其实Map集合中存储的是键值对。Map集合中必须保证键的唯一性。

1,添加
value put(key,value):返回前一个和key关联的值,如果没有返回null 
2,删除
value clear();清空Map集合。
value remove(key);根据指定的key翻出这个键值对。 
3,判断
boolean containsKey(key):
boolean containsValue(value):
boolean isEmpty(); 
4,获取
value get(key);通过建获取值,如果没有该键返回null。当然可以通过返回null,来判断是否包含指定建。
int size();获取键值对的个数。 
put方法;
class Demo1{
 public static void main(String[]args){
 Map map = new HashMap();
     map.put("键","值");
     map.put("键", "值1");
     map.put("活动钱包","不好" );
     map.put("活动钱包","不好");
     map.put("呵呵", "哈哈");
//如果键相同,那么第一个不打印,键和值相同,不重复。 是无序的 
    }
} 

Map集合和Collection集合不一样,所以Map集合里面没有迭代器方法 。


取出Map中的所有元素。   原理,通过keySet方法获取map中所有的键所在的set集合,再通过set的迭代器获取到每一个键,在对每一个键获取对应的的值即可。

 class HashMap{
  public static void main(String[]args){
  HashMap hash = new HashMap();
  hash.put("1","一");
  hash.put("2","二");
  hash.put("3","三");
  //获取到键遍历:
  Set set = map.keySet();
 //因为HashMap的接口是Set;
 //通过键拿到值遍历
 for(Iterator It = set.iterator();It.hasNext();){
      Object obj = It.next();
   //吧键给这个obj
  System.out.println(obj+""+map.get(obj));
   //obj的值   为什么需要get了? get是获取到当前的值
  }


 }       

 } 

存键打值 Map对象名.get(键);

 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Set;
 public class HashMapDemo3 {
 public static void main(String[]args){
   HashMap<String,Student> map = new HashMap<String ,Student>();
   Student set = new Student("李明","男");
   map.put("Jack",set);
    boolean  b  = map.containsKey("Jack");   //判断这个map集合是否存在这个键。
    Set<String> s = map.keySet(); //map没有迭代器方法,set有,吧字符串的键,转成set集合里面,
    if(b){
   for( Iterator<String> it = s.iterator();it.hasNext();){
    String ing =  it.next();
    Student stu = map.get(ing);
    System.out.println("Jack对应的学院姓名是:"+stu.getName()+":性别是"+stu.getSex());
                 }
           }

     }
 }

class Student{
private String name;
private String sex;
Student(){}
Student(String name,String sex){
     this.name = name;
     this.sex = sex;
}
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;
}

} 

Collections类常用方法:

Collections和Collection不同,前者是集合的操作类,后者是集合接口!

Collections提供的常用静态方法:

sort(): 排序

 import java.util.ArrayList;
   import java.util.Collections;
   import java.util.Iterator;
   public class CollectionMinDemo {
   public static void main(String[]args){
   ArrayList list = new ArrayList();
   list.add(new Student1("指尖",12));
   list.add(new Student1("跳动",23));
   list.add(new Student1("安全",12));
   list.add(new Student1("异常",314));
   list.add(new Student1("阿斯顿",123));
   Collections.sort(list); 
   //在这里就是 系统就要给这些的值进行排序,然后我们在遍历即可!

   for(Iterator It =  list.iterator();It.hasNext();){
       Object obj = It.next();
       Student1 stu = (Student1)obj;
       System.out.println("姓名:"+stu.getName()+":"+stu.getAge());
  //           System.out.println(list);
   }

  //       System.out.println(list);

  }
}
class Student1 implements Comparable<Student1>{
private String name;
private int age;
Student1(){}
Student1(String name,int age){
    this.name = name;
    this.age = age;
}
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
public int getAge() {
    return age;
}
public void setAge(int age) {
    this.age = age;
}

@Override
public int compareTo(Student1 o) {
  int num = this.age - o.age;
    return num;
//比较他们两个差值,然后返回给这个属性类,然后系统进行排序。
}

} 

小练习2:

 import java.util.ArrayList;
  import java.util.Collections;
  import java.util.Iterator;

  public class CollectionsDemo3 {
  public static void main(String[]args){
   ArrayList<Student> arr = new ArrayList<Student>();
   arr.add(new Student("北京大学","北京",100,7));
   arr.add(new Student("复旦大学","上海",82,7));
   arr.add(new Student("北京大学","北京",98,7));
   arr.add(new Student("浙江大学","浙江",82,5));
   arr.add(new Student("武汉大学","湖北",82,6));
   arr.add(new Student("中山大学","广东",76,4));
   arr.add(new Student("国防科技大学","湖南",80,4));
   arr.add(new Student("南京大学","江苏",80,5));
   arr.add(new Student("上海交通大学","上海",81,4));
   arr.add(new Student("中国人民大学","上海",42,1));
   Collections.sort(arr);
//      System.out.println("");
   for(Iterator<Student> It = arr.iterator();It.hasNext();){
          Student stu = It.next();
     System.out.println(stu.getName()+"\t"+stu.getDiqu()+"\t"+stu.getAge()+"\t"+stu.getIn());
   }

  }
  }

class Student implements Comparable<Student>{
private String name;
private String Diqu;
private int age;
private int in;
Student(){}
Student(String name,String Diqu,int age ,int in){
    this.name = name;
    this.Diqu = Diqu;
    this.age = age;
    this.in = in;
}
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
public String getDiqu() {
    return Diqu;
}
public void setDiqu(String diqu) {
    Diqu = diqu;
}
public int getAge() {
    return age;
}
public void setAge(int age) {
    this.age = age;
}
public int getIn() {
    return in;
}
public void setIn(int in) {
    this.in = in;
}
@Override
public int compareTo(Student o) {
 int num = this.age - o.age;
 int num2 = num == 0?this.in-o.in:num;
    return num2;
 /*比较总分,的同时,如果发现等于0 ,那么总分必定一样,在这种的情况下。
     就比较他的星级,返回他的差!如果不能与0 就返回num!他的总分!!!!

 */
 }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值