代码改变世界

单元练习

2017-07-19 13:18  耳朵嫁给了真正的谎  阅读(228)  评论(0)    收藏  举报

package chapter8;

import java.util.TreeSet;

class R implements Comparable
{
int count;
public R(int count)
{
this.count=count;
}
public String toString()
{
return "r[count:"+count+"]";
}
public boolean equals(Object obj)//根据count判断是否相等来重写equals
{
if(this == obj)
return true;
if(obj != null && obj.getClass()==R.class)
{
R r =(R) obj;
return r.count==this.count;
}
return false;
}
public int compareTo(Object obj)//重写compareTo()方法,根据count来比较大小
{
R r=(R) obj;
return count>r.count ? 1:count<r.count ? -1:0;
}
}
public class TreeSettest {

/**

*TreeSet根据元素排升序
* 如果像TreeSet中添加一个可变对象后,并且后面程序修改了该可变对象的实例变量,这将导致它与其他对象大小顺序发生改变,但是又不重新调整
* 就可能导致compareTO方法返回0
* 当添加一个值使得元素重复时就会无法删除对象
* 但是可以对没有操作过的对象进行删除
*/
public static void main(String[] args) {
TreeSet ts=new TreeSet();
ts.add(new R(5));
ts.add(new R(-3));
ts.add(new R(9));
ts.add(new R(-2));
System.out.println(ts);
R first=(R) ts.first();
first.count=20;
R last=(R) ts.last();
last.count=-2;
System.out.println(ts);
System.out.println(ts.remove(new R(-2)));
System.out.println(ts);
System.out.println(ts.remove(new R(5)));
System.out.println(ts);
}

}

 

 

 

package chapter8;

import java.util.TreeSet;
class M
{
int age;
public M(int age)
{
this.age=age;
}
public String toString()
{
return "M[age:+"+age+"]";
}
}
public class LambdaTest {

/**
* 使用目标类型为Comparator的lambda表达式,用其来负责排序。
*/
public static void main(String[] args) {
TreeSet ts=new TreeSet((o1,o2) ->
{
M m1=(M) o1;
M m2=(M) o2;
return m1.age>m2.age ? 1:m1.age==m2.age ? 0:-1;
});
ts.add(new M(5));
ts.add(new M(-3));
ts.add(new M(9));
System.out.println(ts);
}
}

 

 

package chapter8;

import java.util.ArrayDeque;

public class LinkedlistTest {

/**
* 主要记住ArrayDeque不仅可以作为栈来使用还可以队列来使用。linkedlist作为list集合、双端队列、栈的用法。总的来说还是arraylist性能好一点
*/
public static void main(String[] args) {
ArrayDeque<String> stack=new ArrayDeque<String>();
stack.push("己亥");
stack.push("工时费亥");
stack.push("手机内部亥");
System.out.println(stack);
System.out.println(stack.peek());//访问出第一个元素,但是不pop出来
System.out.println(stack);
System.out.println(stack.pop());//pop出第一个元素
System.out.println(stack);
ArrayDeque<String> qeque=new ArrayDeque<String>();
qeque.offer("建行贷款");
qeque.offer("就开始呢科技发达");
qeque.offer("好看金山毒霸");
System.out.println("---------------分隔符------------");
System.out.println(qeque);
System.out.println(qeque.peek());//访问出第一个元素,但是不poll出来
System.out.println(qeque);
System.out.println(qeque.poll());////访问出第一个元素,但是不poll出来
System.out.println(qeque);
}

}