您的位置:首页 > 编程语言 > Java开发

java学习笔记(二)类集

2016-11-13 23:50 239 查看
[b]类集:类集合就是一个动态的对象数组
[/b]

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"));
Sy
4000
stem.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);


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  类集 java