鱼C论坛

 找回密码
 立即注册
查看: 2677|回复: 0

[学习笔记] Java-019集合框架之Collection、Collections

[复制链接]
发表于 2018-12-26 12:15:03 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 moc 于 2018-12-26 22:41 编辑

1、Collection简介
集合框架设计目标:
        ① 框架必须是高性能的。基本集合(动态数组,链表,树,哈希表)的实现也必须是高效的。
        ② 框架允许不同类型的集合,以类似的方式工作,具有高度的互操作性
        ③ 对一个集合的扩展和适应必须是简单的。
Java 集合框架体系:
        ① 集合框架的类和接口均在java.util包。
        ② 任何对象没有使用泛型之前会自动转换Object类型,使用泛型之后不用强制转换。
22.jpg
集合根接口Collection:
Collection是集合的顶层接口,它的子体系有重复的,有唯一的,有有序的,有无序的。
2.PNG
迭代器接口 - Iterator:
3.PNG
集合的专用遍历方式,拥有三个方法:
boolean hasNext()  ---------------------->  如果仍有元素可以迭代,则返回 true。
E next()  ---------------------------------->  返回迭代的下一个元素。
void remove()  --------------------------->  从迭代器指向的 collection 中移除迭代器返回的最后一个元素.
2、Collection的方法
1. 添加功能
boolean add(Object obj)  ------------------->  添加一个元素
boolean addAll(Collection c) --------------->  添加一个集合的元素
2. 删除功能
void clear()  ----------------------------------->  移除所有元素
boolean remove(Object o)  ----------------->  移除一个元素
boolean removeAll(Collection c)  -----------> 移除一个集合的元素
3. 判断功能
boolean contains(Object o)  ---------------->  判断集合中是否包含指定的元素
boolean containsAll(Collection c)  ---------->  判断集合中是否包含指定的集合元素(所有)
boolean isEmpty()   -------------------------->  判断集合是否为空
4. 获取功能
Iterator<E> iterator()  ---------------------->  返回迭代器
5. 长度功能
int size()   -------------------------------------->  元素的个数
6. 交集功能
boolean retainAll(Collection c)   ------------->  两个集合都有的元素,返回的boolean为集合是否改变
7. 把集合转换为数组
Object[] toArray()   --------------------------->  返回包含此 collection 中所有元素的数组。
3、方法测试
collection为一个接口,不能直接实例化,需要通过实现该接口的类来实例化,以下通过实现Collection接口的ArrayList类进行测试。
// 创建集合1
Collection c = new ArrayList();
c.add("abc1");   // 添加一个元素
c.add("abc2");
c.remove("abc2");  // 移除一个元素
c.clear();    // 移除所有元素
c.add("hello");
c.add("world");
c.contains("hello")  // 判断集合中是否包含指定的元素
c.isEmpty()   // 判断集合是否为空
c.size()    // 获取集合元素的个数
Object[] objs = c.toArray();   // 把集合转成数组

Iterator it = c.iterator();     // while + 迭代器
while (it.hasNext()) {
        String s = (String) it.next();
        // NoSuchElementException    不要多次使用it.next()方法
        System.out.println(s);
}

for(Iterator it = c.iterator();it.hasNext();){   // for + 迭代器
        String s = (String) it.next();
        System.out.println(s);
 }
4、Collections工具类
Collections是针对集合进行操作的工具类,都是静态方法
常用方法:
public static <T> void sort(List<T> list) ---------------------------------->  排序 默认情况下是自然顺序。
public static <T> int binarySearch(List<?> list,T key)  ----------------->  二分查找
public static <T> T max(Collection<?> coll)  ---------------------------->  最大值
public static void reverse(List<?> list)  ----------------------------------->  反转
public static void shuffle(List<?> list) ------------------------------------>  随机置换
List<Integer> list = new ArrayList<Integer>();  // 创建集合对象
list.add(30);  // 添加元素
list.add(20);
list.add(50);
list.add(10);
list.add(40);
System.out.println("list:" + list);

// Collections.sort(list);
// System.out.println("list:" + list);

// System.out
// println("binarySearch:" + Collections.binarySearch(list, 30));
// System.out.println("binarySearch:" + Collections.binarySearch(list, 300));

// System.out.println("max:"+Collections.max(list));

// Collections.reverse(list);
// System.out.println("list:" + list);
                
Collections.shuffle(list);
System.out.println("list:" + list);

本帖被以下淘专辑推荐:

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-11 04:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表