java集合的语法_Java语法基础学习DayNine(Java集合)

一、Java集合

1.概述

一方面,面向对象语言对事物的体现都是以对象的形式,为了方便对多个对象的操作,就需要对对象进行存储。另一方面,使用Array存储对象具有一些弊端,而Java集合就像一种容器,可以动态的把多个对象的引用放到容器里。Java集合类可以用于存储数量不等的多个对象,还可以保存具有映射关系的关联数组。

Java集合可分为Collection和Map两种体系:

Collection接口:

|- - - - -Set接口:元素无序、不可重复的集合,类似数学的“集合”

|- - - - -HashSet(主要的实现类)、LinkedHashSet、TreeSet

|- - - - -List接口:元素有序、可重复的集合,“动态“数组

|- - - - -ArrayList(主要的实现类)、LinkedList(链表,有利于频繁的插入删除操作)、Vector(古老的实现类、线程安全的、一般不考虑使用)

Map接口:具有映射关系“key-value对”的集合,类似数学的”函数“ y=f(x)

|- - - - -HashMap、LinkedHashMap、TreeMap、Hashtable(子类:Properties )

2.集合的方法

(1)创建语句

Collection coll = new ArrayList();

(2)size():返回集合中元素的个数

System.out.println(coll.size());//输出0,集合为空

(3)add(Object obj):向集合中添加一个元素

coll.add(123);

coll.add("AA");

coll.add(newDate());

coll.add(new Person("xiaoming",18));

System.out.println(coll.size());//输出4,有四个元素

(4)addAll(Collection coll):将形参coll中包含的所有元素添加到当前集合中

Collection coll2 = Arrays.asList(1,2,3);

coll.addAll(coll2);

System.out.println(coll.size());//输出7,有七个元素

(5)isEmpty():判断集合是否为空

System.out.println(coll.isEmpty());//输出False,不为空

(6)clear():清空集合元素

coll.clear();

System.out.println(coll.isEmpty());//输出True,为空

(7)contains(Object obj):判断集合中是否含指定的对象元素,如果包含则返回True

//判断的依据是根据对象元素所在的类的equals()方法进行判断//如果存入集合中的元素是自定义的类,需要重写equals()方法!否则将按照Object类中的equals比较对象的内存地址。

boolean b1 = coll.contains(new String("AA"));

System.out.println(b1);//输出true,注意String类重写了equals,比较的是字符串的内容

boolean b2 = coll.contains(new Person("xiaoming",18));

System.out.println(b2);//输出false,Person这个自定义类没有重写equals方法,比较的是地址值。

(8)containsAll(Collection coll):判断当前集合中是否包含coll中的所有元素

Collection coll3 = newArrayList();

coll3.add(123);

coll3.add("AA");

Boolean b3=coll.containsAll(coll3);

System.out.println(b3);//输出true

(9)retainAll(Collection coll):求当前集合与coll的共有的元素,返回给当前集合

coll3.add(456);

coll.retainAll(coll3);

System.out.println(coll);//输出[123,AA]

(10)remove(Object obj):删除集合中的指定元素,删除成功返回true,否则返回false

boolean b4 = coll.remove("BB");

System.out.println(b4);//输出false,没有“BB”这个元素

(11)removeAll(Collection coll):从当前集合中删除包含在coll中的元素

Collection coll = newArrayList();

coll.add(123);

coll.add("AA");

coll.add("BB");

coll.add("CC");

Collection coll2= newArrayList();

coll2.add(123);

coll2.add("AA");

coll.removeAll(coll2);

System.out.println(coll);//输出["BB","CC"]

(12)equals(Collection coll):判断集合中所有元素是否完全相同

Collection coll3 = newArrayList();

coll3.add(123);

coll3.add(new String("AA"));

System.out.println(coll2.equals(coll3));//输出true

(13)hashCode():暂时跳过

(14)toArray():将集合转化为数组

Object[] obj = coll.toArray();

(15)iterator():返回一个Iterator接口的实现类的对象,进而实现集合的遍历

Iterator iterator =coll.iterator();while(iterator.hasNext()){//Iterator提供的hasNext()方法返回一个boolean值,用于控制遍历

System.out.println(iterator.next());//next(),返回下一个元素

}

3.集合遍历的方法

(1)使用Iterator实现集合的遍历

Iterator iterator =coll.iterator();while(iterator.hasNext()){//Iterator提供的hasNext()方法返回一个boolean值,用于控制遍历

System.out.println(iterator.next());//next(),返回下一个元素

}

(2)使用增强for循环实现遍历,也可用于数组的遍历

for(Object obj:coll){

System.out.println(obj);

}

(3)错误的写法

Iterator i =coll.iterator();while((i.next())!= null){//这里执行了一次next()方法,指针指向下一个元素,导致隔行输出元素

System.out.println(i.next());//,这里又执行了一次next(),可能导致输出空指针,发生Java.util.NoSuchElementException的异常

}

4.ArrayList(List的主要实现类)在List中相对于Collection新增的方法

(1)“增”:void add(int index, Object ele):在指定的索引位置添加元素ele

List list = newArrayList();

list.add(123);

list.add(456);

list.add(new String("AA"));

list.add(0,555);

System.out.println(list);//输出[555,123,456,AA]

(2)boolean addAll(int index,Collection eles):在指定的索引位置添加eles中的所有元素

(3)”查“:Object get(int index):获取指定索引位置的元素

Object obj = list.get(0);

System.out.println(obj);//输出555

(4)“删”:Object remove(int index):删除指定索引位置的元素

list.remove(0);

System.out.println(list.get(0));//输出123

(5)“改”:Object set(int index, Object ele):设置指定索引位置的元素为ele

list.set(0,111);

System.out.println(list.get(0));//输出111

(6)int indexOf(Object obj):返回obj在集合中首次出现的位置,没有的话返回-1

(7)int lastIndexOf(Object obj):返回obj在集合中最后一次出现的位置,没有返回-1

(8)List subList(int fromIndex, int toIndex):返回从fromIndex到toIndex结束的左闭右开的一个子list

List list1 = list.subList(0,2);

System.out.println(list1);//输出[111,456],不包括AA

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值