【Java】Collection单列集合,List、Set

  • Collection接口:单列集合,存储一个一个的对象
    • List接口:存储有序、可重复的数据,长度可变。-->相当于“动态”数组。
    • Set接口:存储无序的、不可重复的数据。-->相当于高中讲的“集合”(无序、确定、互斥)。
  • Map接口:双列集合(映射),存储键值对key-value -->函数:y = f(x),不同的x可以指向同一个y(y=x2),同一个x不能指向多个y;x就相当于key,y相当于value。

1.Collection接口

image

2.Collection接口中的常用方法

方法 描述
add(Object e) 将元素e添加到集合中
addAll(Collection coll) 将集合coll中的元素添加到当前集合中
size() 获取集合中元素个数
clear() 清空集合元素
isEmpty() 判断当前集合是否为空
contains(Object obj) 判断当前集合中是否有obj,会调用obj所在类的equals方法
containsAll(Collection coll) 判断coll集合中的所有元素是否都存在于当前集合中
remove(Object obj) 从当前集合中移除obj
removeAll(Collection coll) 从当前集合中移除coll集合的所有元素
retainAll(Collection coll) 获取当前集合和coll集合的交集,并返回给当前集合
equals(Object o) 要想返回true,需要当前集合和形参集合的元素都相同
hashCode() 返回当前对象的hash值
Object[] arr = coll.toArray(); 集合-->数组
Iterator iterator = coll.iterator(); 返回的迭代器对象用于遍历集合
public void test1() {
Collection coll = new ArrayList();
coll.add("AA"); //1.add()
coll.add(123); //自动装箱
coll.add(new Date());
int size = coll.size(); //3.size()
Collection coll2 = new ArrayList();
coll2.add(456);
coll2.add("CC");
coll.addAll(coll2); //2.addAll()
coll.clear(); //4.clear()
coll.isEmpty(); //5.isEmpty()
Collection coll3 = new ArrayList();
coll3.add(123);
coll3.add(new Person("Jerry", 18));
coll3.add(new String("Tom"));
coll3.add(false);
boolean isContains1 = coll3.contains(123); //true 6.contains()
boolean isContains2 = coll3.contains(new String("Tom")); //true
boolean isContains3 = coll3.contains(new Person("Jerry", 18)); //false,会调用person对象所在类的equals方法
Collection coll4 = new ArrayList();
coll4.add(123);
coll4.add(4567);
boolean isContains4 = coll3.containsAll(coll4); //false 7.containsAll()
coll3.remove(123); //8.remove()
boolean jerry = coll3.remove(new Person("Jerry", 18));//Person类中没有重写equals的话返回false
coll3.removeAll(coll4); //差集 9.removeAll()
boolean b = coll3.retainAll(coll4);//交集,结果返回给coll3,10.retainAll()
coll3.hashCode();
coll3.equals(coll4);
}

3.集合与数组之间的转换

(1)集合-->数组

Object[] arr = coll4.toArray();

(2)数组-->集合

调用工具类Arrays类的静态方法asList();

String[] names = new String[]{"张三","李四","王五"};
List<String> nameList = Arrays.asList(names);

4.使用iterator对象遍历集合中的元素

(1)创建对象,每次调用这个方法都会得到一个全新的对象

Iterator iterator = coll.iterator();

(2)Iterator接口中的方法

  • hasNext():判断是否有下一个元素
  • next():指针下移,下移后将集合位置上的元素返回。
  • remove():删除集合中的元素,不是Collection接口中的remove
    • 指针未指向元素、集合为空、重复remove都会报IllegalStateException

初始时指向前一个位置,调用next指向下一个
image

(3)错误方式

//集合数据
Collection coll = new ArrayList();
coll.add(123);
coll.add(456);
coll.add(new Person("Jerry",20));
coll.add(new String("Tom"));
coll.add(false);
//错误方式一:多次调用next,只打印了456,tom
Iterator iterator = coll.iterator();
while ((iterator.next())!=null){
System.out.println(iterator.next());
}
//错误方式二:每次调用iterator()方法都会得到一个新的对象,报NoSuchElementException
while (coll.iterator().hasNext()){
System.out.println(coll.iterator().next());
}

(4)删除集合中的tom

Iterator iterator = coll.iterator();
while (iterator.hasNext()){
Object obj = iterator.next();
if ("Tom".equals(obj)){
iterator.remove();
}
}

5.foreach循环

jdk 5.0新增,遍历集合和数组

for (Object obj : coll) {
System.out.println(obj);
}
int[] arr = {1, 2, 3, 4, 5, 6};
for (int i : arr) {
System.out.println(i);
}
posted @   植树chen  阅读(54)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
点击右上角即可分享
微信分享提示