Java集合的Collection接口和List接口详解
作者:海文宇 发布时间:2021-11-02 05:24:44
1集合的概念
把集合看做是一个容器,集合不是一个类,是一套集合框架,框架体系包含很多的集合类,java api提供了
集合存储任意类型(基本包装类型,引用类型)
集合对元素的增删查改操作起来非常方便的,专门提供很多方便操作的方法
开发中经常集合来操作数据的,开发地位比较高的,考虑对数据的操作效率上的问题
2 集合的父类Collection接口
2.1常用方法
boolean add(E e) 添加某个元素
addAll(元素) 添加一个集合
remove(object) 删除一个元素
removeAll(collection) 删除一个集合
c.clear(); //移除所有
isEmpty() 判断是否为空
public static void main(String[] args) {
//创建集合
Collection c = new ArrayList();
//添加
c.add("张三");
c.add(10);
c.add(false);
c.add('a');
System.out.println(c);
// addAll(元素) 添加一个集合
Collection c2 = new ArrayList();
c2.add("hello");
c2.add("world");
c2.add("java");
c.addAll(c2);
System.out.println(c);
//删除
System.out.println("删除张三元素是否成功:" + c.remove("张三2"));
System.out.println(c);
c.removeAll(c2);
System.out.println("移除c2集合:" + c);
//清空和判断是否为空
// c.clear(); //移除所有
// System.out.println(c); //[]
System.out.println(c.isEmpty()); //判断集合中的元素是否为空,为空返回true,否则false
System.out.println(c.contains("张三222")); //是否包含某个指定的元素,是返回true,否则false
System.out.println("获取集合中的元素个数:" + c.size()); //leng属性
}
2.2遍历
使用foreach 遍历
使用迭代器遍历
使用toArray()方法转成数组,再遍历.
使用for遍历
public static void main(String[] args) {
Collection c = new ArrayList();
c.add("张三");
c.add("李四");
c.add("王五");
System.out.println(c);
//foreach遍历方式
System.out.println("-------------1");
for(Object obj : c){
System.out.println(obj);
}
//iterator方法,方式二
System.out.println("-------------2");
Iterator it = c.iterator();
while(it.hasNext()){
Object obj = it.next();
System.out.println(obj);
}
System.out.println("-------------3");
//方式三,toArray
Object[] objs = c.toArray();
for(Object o : objs){
System.out.println(o);
}
System.out.println("-------------4");
//方式四
for(Iterator iterator = c.iterator();iterator.hasNext();){
Object obj = iterator.next();
System.out.println(obj);
}
System.out.println("-------------5");
for(Iterator iterator = c.iterator();iterator.hasNext(); System.out.println(iterator.next())){}
}
3 List接口
List接口继承了Collection接口,所以Collection接口的方 * ist都可以使用.
3.1List接口常用方法
添加
boolean add(E e) 添加一个元素
void add(int index, E element) 添加某个元素到指定位置
boolean addAll(Collection<? extends E> c) 添加一个集合
boolean-addAll(int index, Collection<? extends E> c) 添加一个集合到指定位置
删除
E remove(int index) 删除指定位置的元素
boolean remove(Object o) 删除某个元素
boolean removeAll(Collection<?> c) 删除一个集合
修改
E set(int index, E element)
获取
E get(int index)
int size()
其他
int indexOf(Object o)
int lastIndexOf(Object o)
List subList(int fromIndex, int toIndex)
3.2遍历
E get(int index) + int size()
ListIterator listIterator()
ListIterator listIterator(int index)
员工类:
package listdemo;
import java.util.Objects;
public class Employee {
//员工属性, id name age salary
private Integer id;
private String name;
private Integer age;
private Double salary;
public Employee() {
}
public Employee(Integer id, String name, Integer age, Double salary) {
this.id = id;
this.name = name;
this.age = age;
this.salary = salary;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Double getSalary() {
return salary;
}
public void setSalary(Double salary) {
this.salary = salary;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Employee employee = (Employee) o;
return Objects.equals(id, employee.id) &&
Objects.equals(name, employee.name) &&
Objects.equals(age, employee.age) &&
Objects.equals(salary, employee.salary);
}
@Override
public int hashCode() {
return Objects.hash(id, name, age, salary);
}
@Override
public String toString() {
return "Employee{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
", salary=" + salary +
'}';
}
}
public static void main(String[] args) {
//创建一个list集合
List list = new ArrayList();
//添加的方法
list.add("hello");
list.add("java");
list.add(1,"world"); //添加到指定的位置的元素,添加到第二个位置
list.add("html");
System.out.println(list);
List list2 = new ArrayList();
list2.add("test1");
list2.add("test2");
list2.add("test3");
// list.addAll(list2); //添加一个集合
// System.out.println(list);
list.addAll(2,list2); //添加一个新集合到第一个老集合中指定的位置,下标为2
System.out.println(list);
//删除
// * boolean remove(Object o)
System.out.println(list.remove("java"));
System.out.println(list);
// * E remove(int index)
Object obj = list.remove(1);
System.out.println(obj); //world
System.out.println(list);
// * boolean removeAll(Collection<?> c)
list.removeAll(list2);
System.out.println("删除新集合之后:" + list);
//修改
// * E set(int index, E element)
Object o = list.set(1, "编程语言");
System.out.println(o);
System.out.println("修改之后:" + list);
// 其他
// * int indexOf(Object o) 从前面往后某个元素的位置
// * int lastIndexOf(Object o) 从后面往前面找某个元素的位置
// * List<E> subList(int fromIndex, int toIndex)
List list3 = new ArrayList();
list3.add("张三");
list3.add("李四");
list3.add("王五");
list3.add("赵六");
list3.add("小编");
int i = list3.indexOf("李四2222");
System.out.println("李四的位置:" + i);
System.out.println("找王五的下标位置:" + list3.lastIndexOf("王五"));
System.out.println(list3);
List newsList = list3.subList(1, 4); //从老集合中截取1-3的位置的元素,并返回一个新的集合
System.out.println(newsList); //1,2的位置的元素,3不包括,
}
List的遍历
E get(int index) + int size()
ListIterator listIterator()
ListIterator listIterator(int index)
iterator();
toArray();
foreach
toString
for()
package listdemo;
import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;
/**
*
* 遍历
* * E get(int index) + int size()
* * ListIterator<E> listIterator()
* * ListIterator<E> listIterator(int index)
* iterator();
* toArray();
* foreach
* toString
* for()
* for()
*
*/
public class ListDemo02 {
public static void main(String[] args) {
//E get(int index) + int size()
List list = new ArrayList();
list.add("张三");
list.add("李四");
list.add("王五");
ListIterator listIterator1 = list.listIterator(1);
if (listIterator1.hasNext()){
System.out.println("从第一个元素开始取出:" +listIterator1.next());
}
if (listIterator1.hasNext()){
System.out.println("继续取下一个元素:" +listIterator1.next());
}
//size获取集合中元素的个数
System.out.println(list.size());
//get(索引)获取指定索引的元素
// Object o = list.get(0);
// System.out.println(o); //张三
// o = list.get(1);
// System.out.println(o); //李四
// o = list.get(2);
// System.out.println(o); //王五
//以上出现重复,使用循环解决,结合size+get方法
for (int i = 0; i < list.size(); i++) {
Object o1 = list.get(i);
System.out.println(o1);
}
List list2 = new ArrayList();
list2.add("hello");
list2.add("world");
list2.add("java");
ListIterator listIterator = list2.listIterator();//列表迭代器方法,返回迭代器对象
//正向遍历
while (listIterator.hasNext()) { //判断集合中是否有可取的下一个元素,如果有
Object o = listIterator.next(); //取出第一个元素
System.out.println(o);
}
System.out.println("------------------------");
//逆序遍历,在使用hasPrevious(),previous(),先正序遍历才可以使用这个
while(listIterator.hasPrevious()){
Object obj = listIterator.previous();
System.out.println(obj);
}
}
}
4 集合中元素的去重
package listdemo;
import java.util.ArrayList;
import java.util.List;
/**
* 去除集合中重复的元素
*/
public class ListDemo03 {
public static void main(String[] args) {
List list = new ArrayList();
list.add(new Employee(101,"张三",20,2000.0));
list.add(new Employee(102,"李四",30,3000.0));
list.add(new Employee(103,"王五",20,2000.0));
list.add(new Employee(103,"王五",20,2000.0));
//创建一个新的集合
List newList = new ArrayList();
for(Object obj : list){
if (!newList.contains(obj)){
newList.add(obj);
}
}
list = newList; //把新集合的数据赋值给到老集合
//遍历老集合
for(Object obj : list){
System.out.println(obj);
}
//第二种去除重复的方式
//冒泡,选择,比较equlas
//根据选择排序的思想,从第一个元素依次和后面的每一个元素
for (int i = 0; i < list.size(); i++) {
for (int j = i+1; j < list.size(); j++) {
//进行比较,如果第一个元素和第二个元素是相等
//把第二个元素删除
if (list.get(i).equals(list.get(j))){
list.remove(j);
j--;
}
}
}
for(Object obj : list){
System.out.println(obj);
}
}
}
来源:https://blog.csdn.net/Walker_sis/article/details/123332486


猜你喜欢
- 本文实例为大家分享了android实现录屏小功能的具体代码,供大家参考,具体内容如下思路android实现录屏功能有两种方案,一种是直接使用
- 本文实例讲述了C#使用有道ip地址查询接口方法。分享给大家供大家参考。具体实现方法如下:#region 读取http://www.yodao
- 员工管理系统1、准备工作资料下载内含源码 + 笔记 + web素材源码下载地址:http://xiazai.jb51.net/202105/
- 一、Socket是什么Socket 的中文翻译过来就是“套接字”。套接字是什么,我们先来看看它的英文含义:插座。Socket 就像一个电话插
- XmlTextWriter类允许你将XML写到一个文件中去。这个类包含了很多方法和属性,使用这些属性和方法可以使你更容易地处理XML。为了使
- 本文实例讲述了Android编程实现对电池状态的监视功能。分享给大家供大家参考,具体如下:最近在开发一个与GPS相关的项目,因为其中涉及到了
- android欢迎页自动跳转及手机网络检测,具体实现代码如下所示:在1.2s后从欢迎页(welcome)跳转到登陆页(Login_Activ
- 我这里主要是对串口类的简单使用,实现的功能是以读写方式打开串口,点击发送数据按钮将发送区的数据发送到缓冲区,然后在接收区显示出来,界面如下:
- 本文实例为大家分享了Java Swing实现扫雷源码的具体代码,供大家参考,具体内容如下先来看下效果运行时只需要创建一个GameWindow
- Interval操作符:用于创建Observable,跟TimerTask类似,用于周期性发送信息,是一个可以指定线程的TimerTask首
- 前言好几天没写了,工作有点忙,最近工作刚好做一个定时任务统计的,所以就将springboot 如何创建定时任务整理了一下。总的来说,spri
- XListview是一个非常受欢迎的下拉刷新控件,但是已经停止维护了。之前写过一篇XListview的使用介绍,用起来非常简单,这两天放假无
- 本文实例讲述了Android应用启动另外一个apk应用的方法。分享给大家供大家参考,具体如下:在开发的过程中,经常会遇到在一个应用中启动另外
- 本篇我们讲解下使用spring创建bean的几种方式,创建bean,也可以叫组件注册,就是把单例bean放到spring容器中。我们定义如下
- Android WebView常见问题解决方案汇总:就目前而言,如何应对版本的频繁更新呢,又如何灵活多变地展示我们的界面呢,这又涉及到了we
- Druid动态数据源配置 主要是继承AbstractRoutingDataSource再通过AOP来实现动态数据源切换.下面给大家介绍Dru
- C#中如何给Excel添加水印我们知道Microsoft Excel并没有内置的功能直接给Excel表添加水印,但是其实我们可以用其他变通的
- 这篇文章主要介绍了Java数组索引异常产生及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友
- 1. 添加程序集2. 引入命名空间using System.Management;3. 方法M
- 使用wpf程序常常会出现一个问题,那就是内存占用过高,使用wpf的程序功能越复杂往往用着用着内存就本着90往上去了。一方面wpf本身是一个u