列举几个Java中Collection类库中的常用类(集合相关一)
- Java中的集合框架是指一系列存储数据的接口和类,这些类和接口都位于java.util包中
- 使用集合框架可以解决复杂的数据存储问题,Java中内置了丰富的集合框架
List接口、类关系图
ArrayList用法类似于数组,且其容量可按需要动态调整,亦被称为动态数组
LinkedList表示链表的操作类,它同时实现了List和Queue接口。它的优点在于向集合中插入、删除元素时效率比较高,
特别是可以直接对集合的首部和尾部元素进行插入和删除操作,LinkedList提供了专门针对首尾元素的方法,
Set接口、类关系图
Set集合存储顺序无序,不可以保存重复元素。
Set接口常用实现类:HashSet
import java.util.*;
public class SetDemo {
public static void main(String args[]){
Set set = new HashSet();
set.add("apple");//添加元素
set.add("orange");//添加元素
set.add("pear");
set.add("pear");//重复元素不能加入
set.add("banana");
System.out.println(set);
}
}
HashSet类中没有提供根据集合索引获取索引对应的值的方法,
因此遍历HashSet时需要使用Iterator迭代器。Iterator的主要方法如下
public static void main(String args[]) {
Set set = new HashSet();
set.add("apple");
set.add("orange");
set.add("pear");
set.add("pear");//重复元素不能加入
set.add("banana");
Iterator iterator = set.iterator();
while(iterator.hasNext())
{
System.out.println(iterator.next());
}
}
Set接口常用实现类:TreeSet
TreeSet是可以保持自然顺序或者定义的比较器比较的结果顺序的Set集合。
import java.util.*;
public class SetDemo {
public static void main(String args[]){
TreeSet set = new TreeSet();
set.add("kkkkk");
set.add("ddddd");
set.add("vvvvv");
set.add("eeeee");
set.add("kkkkk");
System.out.println(set);
}
}
当TreeSet集合中加入一个对象时,会把它插入到有序的对象序列中。TreeSet支持两种排序方式:自然排序和自定义排序。默认情况下TreeSet采用自然排序方式。
自定义排序:
制作一个比较器
package com.xintouyun.jihe.zidingyipaixutest;
import java.util.Comparator;
import com.xintouyun.jihe.zidingyipaixutest.Custumer;
public class CustumerComparator implements Comparator<Object> {
public int compare(Object obj1, Object obj2) {
Custumer c1 = (Custumer)obj1;
Custumer c2 = (Custumer)obj2;
if(c1.getName().compareTo(c2.getName())>0)
return 1;
if(c1.getName().compareTo(c2.getName())<0)
return -1;
return 0;
}
}
测试类:
package com.xintouyun.jihe.zidingyipaixutest;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;
import com.xintouyun.jihe.zidingyipaixutest.Custumer;
public class test {
public static void main(String[] args) {
//创建set对象传入一个参数比较器
Set<Custumer> set = new TreeSet<Custumer>(new CustumerComparator());
Custumer custumer1 = new Custumer("Bluce", 15);
Custumer custumer2 = new Custumer("Jack", 18);
Custumer custumer3 = new Custumer("Rose", 25);
Custumer custumer4 = new Custumer("rose", 25);
set.add(custumer1);
set.add(custumer2);
set.add(custumer3);
set.add(custumer4);
Iterator<Custumer> it = set.iterator();
while(it.hasNext())
{
Custumer custumer =(Custumer)it.next();
System.out.println(custumer.getName() + "\t" + custumer.getAge());
}
}
}
实体类:
package com.xintouyun.jihe.zidingyipaixutest;
public class Custumer {
private String name;//姓名
private int age; //年龄
Custumer(String name,int age){
this.age=age;
this.name=name;
}
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;
}
}