java 集合 类型_Java 集合类(一)

今天我们先讲一下Collection:

Collection和Collections的区别:

java.util.Collection是一种java集合接口,它提供了对集合对象的基本操作通用接口方法,同时它还有很多具体实现:

5077b6bb5a1e70752b3dc8e54bd6052c.png

7b1ce70cece277c52efd1b2fd8e2f3d5.png

注:以上图片只列举常用集合类

java.util.Collections是一个包装类,它包含许多有关集合操作的静态多态方法,此类不能实例化,它就像个工具类,服务与java的Collection。有关Collections的具体方法可参考JDK说明文档(部分也可见),下面我举出几个方法示例:

import java.util.Collection;

import java.util.Collections;

import java.util.ArrayList;

import java.util.List;

public class test {

private double[] a = {123,33,423,655,4553};

List l = new ArrayList();

List l2 = new ArrayList();

public static void main(String[] args) {

new test().sort();

}

public void sort(){

for(int i = 0; i

l.add(a[i]);

}

Collections.sort(l);

for(int i = 0 ;i

System.out.println(l.get(i));

}

}

}

运行结果如下:

39cfac0a555e67dcd087c482737b42cc.png

可在上面代码的基础上添加同类方法,如:

把上面sort()中的Collections.sort(l);--->Collections.shuffle(l);    //随机排序

--->Collections.reverse(l);    //反转排序

--->Collections.min(l);      //返回最小元素(max,最大)

--->Collections.fill(l,"334");   //用334替换所有元素

......

2.常见java容器的比较:

接口

特性

实现类

实现类特性

成员要求

List

线性、有序的存储容器,可通过索引访问元素

ArrayList

数组实现。非同步。

Vector

类似ArrayList,同步。

LinkedList

双向链表。非同步。

Map

保存键值对成员

HashMap

基于哈希表的 Map 接口的实现,满足通用需求

任意Object对象,如果修改了equals方法,需同时修改hashCode方法

TreeMap

默认根据自然顺序进行排序,

或者根据创建映射时提供的 Comparator进行排序

键成员要求实现Comparable接口,或者使用Comparator构造TreeMap。键成员一般为同一类型。

LinkedHashMap

类似于HashMap,但迭代遍历时取得“键值对”的顺序是其插入顺序或者最近最少使用的次序

与HashMap相同

IdentityHashMap

使用==取代equals()对“键值”进行比较的散列映射

成员通过==判断是否相等

WeakHashMap

弱键映射,允许释放映射所指向的对象

ConcurrentHashMap

线性安全的Map

Set

成员不能重复

HashSet

为快速查找设计的Set

元素必须定义hashCode()

TreeSet

保持次序的Set,底层为树结构

元素必须实现Comparable接口

LinkedHashSet

内部使用链表维护元素的顺序(插入的次序)

元素必须定义hashCode()

注:在满足要求的情况下,Map应尽量使用HashMap,Set应尽量使用HashSet

3.Collection的学习:

实例1:

import java.util.*;

public class SimpleCollection{

public static void main(String[] args){

Collection c = new ArrayList();

for(int i = 0;i < 10; i++)

c.add(i); //Autoboxing

for(Integer i: c)

System.out.println(i +", ");

}

}

/*

0,1,2,3,4,5,6,7,8,9,

*/

实例2:

/*

如何向Collection添加一组元素

*/

//以下是方法体

Collection collection = new ArrayList

(Arrays.asList(1,2,3,4,5)); //Array像Collections一样是工具类

Integer[] moreInt = {6,7,8,9,10};

Collection.addAll(Arrays.asList(moreInt));

Collections.addAll( collection,11,12,13,14); //Collection对象作参数

Collections.addAll( collection, moreInt);

List list = Arrays.asList(16,17,18);

list.set(1,99);

//list.add(21) //错误,asList产生的List的长度不可变,只能修改元素值

下一节学习List部分!!

###    学习从来都是一个过程,对对错错对对...若文中有错误,还望读者批评指出      ###

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值