集合

集合

一、C#集合

以前讲过C#的集合,今天就简单的过一遍就好,重点不是在C#的集合而是Java的集合。

1、List和ArrayList

List和ArrayList的存储方式类似数组。

1、List :是泛型,限制数据类型;

语法:List<数据类型> list = new List<数据类型>();

2、ArrayList:是非泛型,不限制数据类型

语法:ArrayList array = new ArrayList();

2、Hashtable和Dictionary

Hashtable和Dictionary的存储方式是键对值得存储

1、Dictionary是泛型,泛型限制数据类型;

语法:Dictionary<key的数据类型,value的数据类型> dic = new Dictionary<key的数据类型,value的数据类型>();

2、Hashtable是非泛型,是不限制数据类型的;

语法:Hashtable hash = new Hashtable();

二、Java集合

1、相关类

1、Collection接口:

Collection接口存储一组不唯一(允许重复),无序的对象。

Collection是List和Set的父类,Collection是接口(interface);

2、Collections类:

Collections和Collection很像,但是它们不是一样的,Collections是Java提供的进行集合操作的工具类,Collections提供了对集合进行排序等多种算法实现。

3、Iterator接口:

这个接口是专门用来迭代(变量)集合的。

4、关系:

Collection是List和Set的父类,都是接口;

Map和Collection没有关系;

工具类:Collections;

迭代遍历:Iterator。

2、List

List在Java中是接口,List接口继承Collection接口,存储一组不唯一(允许重复)有序(以元素插入的次序来排列)的对象;

List接口的实现类:ArrayList、LinkedList和vector;

1、ArrayList

存储方式:类似数组;

1、语法:

//语法一
//ArrayList和List都属于java.util的包
//这是非泛型的集合。
ArrayList list = new ArrayList();
//语法二
//ArrayList和List都属于java.util的包
//这是非泛型的集合。
List list = new ArrayList();
//语法三
//ArrayList和List都属于java.util的包
//这是泛型的集合。
ArrayList<String> list = new ArrayList<String>();
//这里String就是数据类型了,这里用的是数据类型必须是引用数据类型,如果要用基本数据类型可以使用基本数据类型的包装类
基本数据类型基本数据类型的包装类
intInteger
charCharacter
floatFloat
longLong

基本数据类型的包装类只有int和char是变化比较大的,其他的基本数据类型都只要大写首字母就可以了。

2、方法:

add()添加方法;

get(下标)取数据,下标从0开始到长度-1结束;

size()得到长度;

删除值:区别于C#:删除指定值:Remove,删除指定下标:RemoveAt; Java:删除值和删除下标都是用Remove方法,通过参数类型区分;如果是int就是下标,如果是其他类型就是值。

3、遍历:for,foreach,Iterator

//for
for(int i = 0;list.size();i++){
   System.out.println(list.get(i));
}
//foreach
for(int nun : list){
   System.out.println(num);
}
//Iterator遍历步骤:1、先将List/Set/Map转换成为Iterator对象---iterator()方法;2、通过hasNext()方法判断是否还有下一个值;3、通过Iterator对象得next()方法取值
Iterator it = list.iterator();
while(it.hasNext()){
    System.out.println(it.next());
}
2、LinkedList

1、LinkedList得存储方式:是链式存储(前一个会有一个指向下一个值的存储单位);

2、好处:适用于集合数据频繁的修改;不适用频繁的读取数据;

3、语法:

//语法一:非泛型
LinkedList list = new LinedList();
//语法二:泛型,这里的数据类型要是引用数据类型
LinkedList<String> link = new LinkedList<String>();

4、方法:

add()添加方法,add(int,Object)添加值到指定位置

addFried();添加到第一位

addLast();添加到最后一个;

addFried()和addLast()是LinkedList独有的方法。

clear()清空

getFried() 得到第一个;getLast()得到最后一个

iterator()转换成Iterator对象

remove()删除;removeFired()删除第一个;removeLast()删除最后一个

toArray()转换成数组

5、遍历 for,foreach,Iterator

//for
for(int i = 0;i < link.size();i++){
	System.out.println(link.get(i));
}

//foreach
for(int num : link){
    System.out.println(num);
}

//Iterator
Iterator it = link.iterator();
while(it.hasNext()){
    System.out.println(it.next());
}
3、Vector

Vector 和ArrayList是一样的操作,方法等;

Vector和ArrayList的区别:Vector是线程安全,ArrayList是线程不安全。

3、Set

Set在Java中也是接口,Set接口继承Collection接口,存储一组唯一(不允许重复)无序的对象;

1、操作:类似List

2、实现类:HashSet、TreeSet

1、HashSet:类似数组;

2、语法:

Set<Integer> hashSet = new Set<Integer>();

3、方法:

clear(); 清空

isEmpty(); 判断是否为空,为空就是true

iterator(); 转换成Iterator对象

size(); 得到长度

toArray();转换成数组

4、add()添加方法的特点:

同一个值只能添加一次;

//例
hashSet.add(10);
hashSet.add(10);
//一个值只能添加一次

5、遍历

//foreach
for(int num : hashSet){
	System.out.println(num);
}

//Iterator
Iterator it = hashSet.inerator();
while(it.hasNext()){
	System.out.println(it.next());
}

这里不能用for循环,因为这HashSet不能用下标来取值,因为它是无序的。

2、TreeSet

1、TreeSet:是以树形结构图存储的,继承了SocrtedSet接口

2、语法:

TreeSet<Integer> tree = new TreeSet<Integer>();

3、方法:

add() 添加方法,iterator()转换成Iterator对象,……

4、遍历:

//Iterator
Iterator it = tree.iterator();
while(it.hasNext()){
    it.next();
}

TreeSet在变量的时候会自动排序,默认是从小到大;

注:父类指向子类的时候,不能调用子类特有的方法;

4、Map

Map在Java中也是接口,Map的存储方式:存储一组成对的键 - 值对象,提供键(key)到值(value)的映射,Map中的key不要求有序,不允许重复,value同样不要求有序,但允许重复。

1、存储方式:key:value

2、实现类:HashMap、Hashtable、TreeMap、ConunrrentMap

1、HashMap

1、语法:不能有重复的key,否则会覆盖,key和value可以是null

//1
Map map = new HashMap();
//2
Map(String,String) map1 = new HashMap(String,String);
//3
HashMap map3 = new HashMap();

2、方法:

put(key,value); 添加

get(“key”); 取值

size(); 得到长度

3、遍历:

//所有的key
Set<String> setkey = map.KeySet();

//所有的value
Collection<String> coll = map.Values();

//遍历key,Iterator
Iterator<String> it = tree.iterator();
while(it.hasNext()){
    String key = it.next();
    System.out.println(key+"\t"+map.get(key));
}
//foreach
for(String key:setkey){
	 System.out.println(key);
}

//遍历value,Iterator
Iterator<String> it = tree.iterator();
while(it.hasNext()){
    String value = it.next();
    System.out.println(value+"\t"+map.get(key));
}
//foreach
for(String value:Values){
	 System.out.println(key);
}


2、Hashtable

1、语法:可以用重复的key,key和value都不能为null;

Hashtable<String,Integer> hash = new Hashtable<String,Integer>();

Hashtable方法和遍历和HashMap差不多。

2、线程安全:Hashtable,Vector,ConcurrentMap(特点是:速度慢,安全)

线程不安全:HashMap,ArrayList(特点是:速度快,不安全)

3、TreeMap

1、TreeMap是树形结构图存储,有二叉树算法在里面。

2、语法:key不能为null,可以添加重复的key,然后回覆盖掉以前key对应的value。

TreeMap<String,String> tree = new TreeMap<String,String>();

3、方法和遍历:

添加方法:put(“key”,“value”);

//遍历
for(String key:tree.KeySet()){
	System.out.println(key+"\t"+tree.get(key))
}

TreeMap会对key进行排序

4、ConunrrentMap

1、语法:

ConcurrentMap<String,String> con = new ConcurrentHashMap<String,String>();

2、添加方法:put(“key”,“value”);

3、实现安全的方式要比Hashtable更优,它是针对线程安全部分代码做了优化。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值