【JavaSE总结】集合框架

一、Collection

返回值方法用法
booleanadd(Object o)添加一个对象
booleanaddAll(Coolection c)将一个集合中所有对象添加到这个集合中
voidclear()清空此集合的所有对象
booleancontains(Object 0)检查集合是否包含o对象
booleanequals(Object o)比较两个集合是否相等
booleanisEmpty()判断此集合是否为空
booleanremove(Object o)在集合中删除o对象
intsize()返回此集合中的元素个数
Object[]toArray()将此集合转成数组

(不全,其他的可参照帮助文档)

增删操作,以ArrayList为例。

Collection c = new ArrayList();
//1、添加元素
c.add("apple");
c.add("pear");
c.add("watermelon");
System.out.println("元素个数:"+c.size());//元素个数:3
System.out.println(c);//调用toString()方法  [apple, pear, watermelon]
//2、删除元素
c.remove("pear");
System.out.println("删除之后:"+c);//删除之后:[apple, watermelon]
c.clear();
System.out.println(c.size());//0

遍历操作,以ArrayList为例。

//1、增强for循环遍历
for(Object o:c2){
    System.out.println(o);
}
System.out.println("==================================");
//2、迭代器
Iterator iterator = c2.iterator();
while(iterator.hasNext()){
    System.out.println(iterator.next());
    //iterator.remove();//迭代器中的删除方法
}

1、List

有序、有下标、元素可重复。
特有方法:

返回值方法用法
voidadd(int index,Object o)在index位置插入o
booleanaddAll(int index,Collection c)在index位置插入c
Objectget(int index)获取指定位置的元素
ListsubList(int fromIndex,int toIndex)返回fromIndex到toIndex之间的元素
ArrayList(数组列表)

JDK1.2
查询快,增删慢。运行效率快,线程不安全。
默认容量为10。
可以用列表迭代器正向或逆向遍历。

//列表迭代器正向遍历
ListIterator lis = list.listIterator();
while (lis.hasNext()){
    System.out.println(lis.next().toString());
}
System.out.println("====================");
//列表迭代器逆序遍历
while (lis.hasPrevious()){
    System.out.println(lis.previous().toString());
}
Vector(矢量表)

JDK1.0
查询快,增删慢。运行效率慢,线程安全。
使用枚举器遍历,用法类似于迭代器。

LinkList(链表)

双向链表
查询慢,增删快。
使用方法类似于ArrayList。

linkedList.getFirst();//获取头结点
linkedList.getLast();//获取尾结点

2、Set

无序、无下标、元素不可重复。
方法同Collection
删除操作只能通过元素删除,因为没有下标。
遍历操作无法使用for循环,可以用增强for循环迭代器

HashSet()

通过hashcode使元素不重复。

TreeSet(实现SortedSet接口)

元素对象的类型必须实现Comparable接口。例如Person类是加入TreeSet的一种引用类型,则:

public class Person implements Comparable<Person>{
	······
	//重写一下方法,用来确定如何判断重复对象
	@Override
	public int compareTo(Person o){
		···
	}
}

Comparator接口:实现定制比较的比较器,可以作为TreeSet有参构造的参数。传入这个参数后,元素的类可以不必实现Comparable接口。例如:

//Person类是一个自定义的引用类型
TreeSet<Person> treeSet = new TreeSet<>(new Comparator<Person>(){
	@Override
	public int compare(Person o1,Person o2){
		比较规则与返回值
	}
});

这里可以使用匿名内部类直接实现Comparator接口。

二、Map

  1. 以键值对的方式存储
  2. 键:无序、无下标、不可重复
  3. 值:无序、无下标、可重复

常用方法:

返回值方法用法
voidclear()清空
booleancontainsKey(Object key)判断是否存在某个键
booleancontainsValue(Object value)判断是否存在某个值
Set< Map.Entey< K,V > >entrySet()将Map对象转成把键值对作为元素的Set集合
Vget(Object key)根据键获取值
booleanisEmpty()Map是否为空
Set< K >keySet()将所有的key转成一个Set集合
Vput(K key,V value)添加键值对
Vremove(Object key)根据key删除
intsize()返回集合大小
Collection< V >values()以Collection形式返回所有的value

使用示例,以HashMap为例:

Map<String,String> map = new HashMap<>();
//增删
map.put("aaa","AAA");
map.put("bbb","BBB");
map.put("ccc","CCC");
map.put("ddd","DDD");
map.put("eee","EEE");
System.out.println(map);//{aaa=AAA, ccc=CCC, bbb=BBB, eee=EEE, ddd=DDD}
map.remove("bbb");
System.out.println(map);//{aaa=AAA, ccc=CCC, eee=EEE, ddd=DDD}
//遍历
//1、使用keySet,得到key的Set集合
for(String str:map.keySet()){
    System.out.println(str+"="+map.get(str));
}
//2、使用entrySet
for(Map.Entry e:map.entrySet()){
    System.out.println(e);
}

1、HashMap

JDK1.2加入,线程不安全,运行效率快。
允许null作为key或value。
默认容量为16.

Hashtable:线程安全,运行效率慢,不允许null作为key或value。
Properties:继承了Hashtable,Key和Value都是String。通常用于配置文件的读取。

2、TreeMap(实现SortedMap)

对key进行自动排序
元素对象的类型必须实现Comparable接口。实现方法可参考TreeSet。

三、Collections工具类

所有的方法都是 public static void

方法用法
reverse(List<?> list)逆向排列元素
shuffle(List<?> list)随机打乱元素顺序
sort(List< T > list)升序排列(元素类型必须实现Comparable接口)

其他常用方法:

方法用法
binarySearch(List<?>,T key)二分搜索一个List实现类的某个值,返回索引
addAll(Collection c,T…elements)将某些元素全部加入c集合
copy(List l1,List l2)将l2的所有元素复制到l1(l1是新List时先扩容,否则容易下标越界)

扩容方法示例:

//定义list集合
List<String> list = new ArrayList<>();
list.add("aaa");
list.add("bbb");
list.add("ccc");

List<String> list2 = new ArrayList<>();
Collections.addAll(list2,new String[list.size()]);//实例化元素个数为list.size()元素全为空的String数组,全部添加到待赋值集合list2中,相当于为list2扩容成和list一样大的集合
Collections.copy(list2,list);
System.out.println(list2.toString());//[aaa, bbb, ccc]

上一篇 常用类
下一篇 IO流

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

新手且笨蛋37

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值