ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java 数据类型:集合接口Collection之常用

2021-04-08 20:34:52  阅读:201  来源: 互联网

标签:java persons 数据类型 System Collection 集合 add println out


java.util.Collection接口

Java的集合主要由两个接口派生出来,一个是Collection一个是Map,本章只记录Collection常用集合

集合只能存储引用类型数据,不能存储基本类型数据

集合类是一种特别有用的工具类,它可以存放数量不等的对象,实现常用的数据结构,如栈,队列等。除此之外,Java集合还可用于保存具有映射关系的关联数组。简单的来说,Java集合就是一个容器,可以把多个对象丢进该容器中。

Collection从父类接口Iterable中继承了抽象方法iterator()
所有Collection接口的实现类都需要重写抽象方法iterator()
---所有Collection集合都是可迭代的。

下图是Collection的继承树:

 

 

常用方法:

(1),boolean add(Object o) 向集合中添加一个元素。如果集合对象被添加操作改变了,就返回true。 (2),boolean addAll(Collection c) 把集合c里面的所有元素添加到指定的集合里,如果集合对象被添加操作改变了,那么返回true。 (3),void clear() 清除集合中的所有元素,集合长度将变为0 (4),boolean contains(Object o) : 判断集合元素是否包含指定元素 (5),boolean containsAll(Collection c) : 返回集合李是否包含集合c里面的所有元素 (6),boolean isEmpty() : 返回集合是否为空。当集合长度为0的时候返回true,否则返回false。 (7),Interator iterator():返回一个Iterator对象,用于遍历集合里的元素。 (8),boolean remove(Object o):删除集合中指定的元素o,当集合中包含一个或者多远元素的o时,该方法值删除第一个符合条件的元素,该方法返回true。 (9),boolean removeAll(Collection c) : 从集合中删除集合c里面包含的所有元素,如果删除了一个或者一个以上的元素,那么返回true. (10),int size():返回该方法里面集合元素的个数 (11),Object[] toArray():把集合转化成一个数组

ArrayList

import java.lang.reflect.Constructor;
import java.util.ArrayList;
import java.util.Collection;
import java.util.function.Consumer;

/**
 * @ClassName ArrayListExample
 * @projectName: object1
 * @author: Zhangmingda
 * @description: XXX
 * date: 2021/4/8.
 */
public class ArrayListExample {
    public static void main(String[] args) {
        Collection persons = new ArrayList();
        System.out.println(persons.size());//判断集合元素核数
        persons.add("帅哥");
        persons.add("美女");
        persons.add("大爷"); //添加元素
        System.out.println(persons);
        Collection persons2 = new ArrayList();
        persons2.add("QIQI");
        persons2.add("hh");
        persons.add(persons2);
        persons.addAll(persons2); //集合合并
        System.out.println(persons);
        System.out.println(persons.contains("hh")); //判断是否存在元素
        System.out.println(persons.containsAll(persons2));//判断是否存在另一个集合
        System.out.println(persons.isEmpty()); //判断是否为空
        System.out.println(persons.size());
        persons.clear();//清空集合
        System.out.println(persons.size());

        persons.forEach(new Consumer() {
            @Override
            public void accept(Object o) {
                System.out.println(o);
            }
        });
    }
}

lambda表达式遍历集合:

java8的Iterable接口新增了一个forEach(Consumer action)默认方法。该方法所需参数的类型是一个函数式接口,而Iterable接口是Collection接口的父接口,因此Collection集合也可以直接调用该方法。
import java.util.ArrayList;
import java.util.Collection;
import java.util.function.Consumer;

/**
 * @ClassName ArrayListLambdaExample
 * @projectName: object1
 * @author: Zhangmingda
 * @description: XXX
 * date: 2021/4/8.
 */
public class ArrayListLambdaExample {
    public static void main(String[] args) {
        Collection persons = new ArrayList();
        System.out.println(persons.size());//判断集合元素核数
        persons.add("帅哥");
        persons.add("美女");
        persons.add("大爷"); //添加元素
        //查找需要传入的匿名类对象
        persons.forEach(new Consumer() {
            @Override
            public void accept(Object o) {
                System.out.println(o);
            }
        });
        //使用lambda方式遍历
        persons.forEach(o -> System.out.println(o));
    }
}

 

14-1-1 List接口继承了Collection
特点:有序,可重复
有序:存储顺序与添加顺序一样
可重复:可以存储重复的数据,List为每个元素指定了索引值,增加了针对索引值的操作
实现类:
ArrayList:底层数据结构是数组,访问快、添加删除慢,初始化容量10,扩容1.5倍
Vector:底层也是数组,是线程安全的,初始化容量10,扩容2.0倍
LinkedList:底层数据结构是双向链表,访问慢、添加删除效率高
双向链表?:...

ArrayList 实现 Collection接口 示例:

//1、实际应用中,一个集合一般只存储同一类型的数据,可以再定义集合时通过泛型指定存储元素的数据类型
//在定义集合存储String字符串,只需要在接口名Collection后面使用尖括弧<String> 泛型指定存储String
Collection<String> collection = new ArrayList<>();

collection.add("aa");
collection.add("bb");
collection.add("aa");
collection.add("bb");
collection.add("cc");
System.out.println(collection);
//2、添加非泛型指定的数据类型,会语法错误
// collection.add(123);
//
//3、遍历集合中的每一个元素,快捷匹配itco
//hasNext()判断游标后面是否还有元素
//.next()返回当前游标所在的下一个元素值
for (Iterator<String> iterator = collection.iterator(); iterator.hasNext(); ) {
String next = iterator.next();
System.out.println(next);
}
//3、简单易理解的遍历写法
Iterator<String> iterator = collection.iterator();
while (iterator.hasNext()){
System.out.println(iterator.next());
}
//4、删除元素
//.remove()只能删除第一个匹配的元素
collection.remove("aa");
System.out.println(collection);
//5、要遍历到需要删除的元素使用迭代器删除
for (Iterator<String> stringIterator = collection.iterator(); stringIterator.hasNext(); ) {
//String next = stringIterator.next();
if ("aa".equals(stringIterator.next())){
stringIterator.remove();
}
}
System.out.println(collection);
ArrayList 实现 List接口 示例:
List<String > list = new ArrayList<>();
list.add("a");
list.add("bb");
list.add("ccc");
list.add("bb");
list.add("ff");
list.add("ccc");
System.out.println(list);
//1、list 为每个元素指定了索引值
list.add(0,"ShaBi");
System.out.println(list);

//2、返回指定位置的元素
System.out.println(list.get(0));

//3、修改指定位置的元素
list.set(1,"HaHa");
System.out.println(list);

//4、删除指定位置的元素
list.remove(1);
System.out.println(list);

//5、可以for循环遍历list集合
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}

//6、List在JDK8中新增了sort(Comparator) 排序功能
list.sort(new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o1.compareTo(o2);
}
});
System.out.println(list);

注意:

ArrayList 对象实现类:
ArrayList<String> arrayList = new ArrayList<>();
arrayList.add("e23");
arrayList.add("e24");
System.out.println(arrayList);
System.out.println(arrayList.contains("e23"));

Vector
Vector<String> vector = new Vector<>();
vector.add("abc");
vector.add("Hello");
vector.add("World");
System.out.println(vector);
vector.remove("Hello");
System.out.println(vector);

注意:

LinkedList
注意理解双向链表的添加删除快访问慢的原理

标签:java,persons,数据类型,System,Collection,集合,add,println,out
来源: https://www.cnblogs.com/zhangmingda/p/14634541.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有