Java集合的Collection接口和List接口详解

网友投稿 261 2022-08-22


Java集合的Collection接口和List接口详解

目录1集合的概念2集合的父类Collection接口2.1常用方法2.2遍历 3List接口3.1List接口常用方法3.2遍历4集合中元素的去重总结

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接口的方法List都可以使用.

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 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();foreachtoStringfor()

package listdemo;

import java.util.ArrayList;

import java.util.List;

import java.util.ListIterator;

/**

*

* 遍历

* * E get(int index) + int size()

* * ListIterator listIterator()

* * ListIterator 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);

}

}

}

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:最长公共连续子串
下一篇:python 一文教你入门洗衣机行业,啊呸,是入门面向对象(python基础教程)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~