java学习笔记(二)类集

类集:类集合就是一个动态的对象数组

List

List的常用方法介绍
//添加对象
list1.add("中国");
list1.add("四川");
System.out.println(list1);
list2.add("成都");
list2.add("双流");
System.out.println(list2);
//增加一组对象
list1.addAll(list2);
//list1.addAll(1,list2);//在指定位置添加
System.out.println(list1);

//移除对象
list1.remove(0);
//list1.remove("成都");
System.out.println(list1);
//输出对象
for(int i=0;i<list1.size();i++){
System.out.println(list1.get(i));
}
//将集合变成数组
Object[] a = list1.toArray();
for(int i=0;i<a.length;i++){
System.out.println(a[i]);
}

//切取集合中的部分元素
List<String> list3 = list1.subList(0, 2);
System.out.println(list3);
//查找某个元素的位置
System.out.println(list1.indexOf("成都"));
//判断集合是否为空
System.out.println(list1.isEmpty());

LinkedList子类(一个链表操作类)
定义如下
public class LinkedList<E>extends AbstractSequentialList<E>implements List<E>, Deque<E>, Cloneable, Serializable
继承了Deque所以具有队列的特点,先进先出
//创建链表
LinkedList<String> ld = new LinkedList<String>();
ld.add("苹果1");
ld.add("苹果2");
ld.add("苹果3");
ld.add("苹果4");
ld.add("苹果5");
System.out.println(ld);

//在链表首尾添加
ld.addFirst("苹果0");
ld.addLast("苹果6");
System.out.println(ld);
//找到链表的头
System.out.println(ld.element());//找到头
System.out.println(ld.peek());//找到头
System.out.println(ld.poll());//找到并删除头
System.out.println(ld);
//按照先进先出的思想取出链表里的元素
for(int i=0;i<6;i++){//注意这里不能写成 ld.size();因为ld.size()的值 在随着链表里的元素被移除而变化
System.out.println(ld.poll()+":"+i);
}


public boolean equals(Object obj){
		//首先判断是不是我们要判断的类型
		if(!(obj instanceof Dog)){
			return false;
		}
		//判断是不是不同名字,但是指向了同一个
		if(this == obj ){
			return true;
		}
		//判断是不同的对象,但是值确是一样
		Dog d = (Dog)obj;
		if(this.age == d.getAge()&&this.getName()==d.getName()){
			return true;
		}else{
			return false;
		}
	}
	public int hashCode(){
		return this.name.hashCode();
		//return this.name.hashCode()*this.age;
	}

比较器
第一种
被比较的对象要实现Comparable<>(在java.lang中)接口的compareTo()方法,然后用sort()方法排序(排序的原理是二叉树排序)
public int compareTo(Person p) {
if(this.score>p.getScore()){
return 1;//返回1是从小到大,返回-1是从大到小
}else if(this.score<p.getScore()){
return -1;
}else
return 0;
}


Arrays.sort(p);

第二种
利用java.unit中的Comparator<T>接口


class CompareClass implements Comparator<Person1>{
public int compare(Person1 p1, Person1 p2) {
if(p1.getScore()<p2.getScore()){
return 1;
}else if(p1.getScore()>p2.getScore()){
return -1;
}else{
return 0;
}
}

}


Arrays.sort(p, new CompareClass());

在TreeSet中两种比较器都是可以的
第二种可以在构造时传入比较器
TreeSet<Fruit> tt = new TreeSet<Fruit>( new ComparaTool());
/*tt.add(new PersonT("好人",12,90));
tt.add(new PersonT("坏人",18,18));
//tt.add(new PersonT("坏人1",18,18));
tt.add(new PersonT("美人",18,5));
tt.add(new PersonT("如花",28,100));*/
tt.add(new Fruit("苹果",8.5));
tt.add(new Fruit("香蕉",4.8));
tt.add(new Fruit("西瓜",2.5));
tt.add(new Fruit("梨子",6.5));
System.out.println(tt);

SortedSet接口(一个用于排序的接口,它的子类都是排序的,Treeset就是实现了它)
SortedSet<String> std = new TreeSet<String>();

std.add("人1");
std.add("人2");
std.add("人3");
std.add("人4");
System.out.println(std.first());
System.out.println(std.hashCode());
System.out.println(std.last());
System.out.println(std.headSet("人2"));
System.out.println(std.tailSet("人2"));


集合工具类(collections)
为集合添加内容
List<String> all= new ArrayList<String>();
Collections.addAll(all,"haoren","huairen","person");




反转
collections.reverse(all);

查找
collections.binarySearch(all,"haoren");
替换
collections.replaceAll(all,"haoren","mz");
排序
collections.sort(all);

交换指定位置的内容
collections.swap(all,1,2);




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值