Java基础_List集合

List集合

1.list集合的特点
list集合中的元素有序(存储和取出来的元素是一致的,就是说你之前使用什么元素存储进去,你使用以后输出来元素还是一样的),元素是可以
重复的。

2.list集合继承于Collection集合,可以使用Collection集合中的所有功能和方法,同时也有一些自己的特有方法。
(1).添加功能:
void add(int index,Object element):在指定位置添加元素
(2).获取功能:
Object get(int index):获取指定位置的元素
(3).列表迭代器:
ListIterator listIterator():List集合特有的迭代器
(4).删除功能:
Object remove(int index):根据索引删除元素,返回被删除的元素
(5).修改功能:
Object set(int index,Object obj):根据元素索引修改元素,返回被修改的元素

3.list集合使用测试_list集合存储自定义对象并遍历
代码:
public class Test {
public static void main(String[] args) {
Student s1=new Student(10,"张三");
Student s2=new Student(11,"李四");
Student s3=new Student(12,"王五");
List<Student> lt=new ArrayList<Student>();
lt.add(s1);
lt.add(s2);
lt.add(s3);
//遍历方法1:使用迭代器遍历
Iterator<Student> ltIterator=lt.iterator();
while (ltIterator.hasNext()) {
Student st=ltIterator.next();
System.out.println(st.getAge()+"------"+st.getName());
}
System.out.println("---------------");
//方法2:使用for循环
for(int i=0;i<lt.size();i++){
Student s=lt.get(i);
System.out.println(s.getAge()+"-------"+s.getName());
}
}
}
//输出结果
10------张三
11------李四
12------王五
---------------
10-------张三
11-------李四
12-------王五

4.list集合的是三个子类
ArrayList:
底层结构是数组,查询快,增删慢
线程不安全,效率高
Vector:
底层结构是数组,查询快,增删慢
线程安全,效率高
LinkedList
底层结构是链表,查询慢,增删快
线程不安全,效率高

如何看怎么使用?
看需求
需要线程安全吗?
要:就使用Vector
不需要:ArrayList或者是linkedList
查询多:ArrayList
增删多:LinkedList

如果说什么看不出来,就是用ArrayList

5.集合框架中的异常_并发修改异常以及解决方案

(1).ConcurrentModificationException:当方法检测到对象的并发修改,但是不允许这种修改时,就抛出异常。

(2).产生的原因:
迭代器是依赖于集合而存在的,在判断成功以后,集合中新添加了元素,但是这一个时候迭代器还不知道(就是说你在使用迭代器遍历的时候,
迭代器就默认你已经往集合里面添加完元素了),所以就报错,正和一个错误叫兵法修改异常。

(3).解决方法:
A:使用迭代器迭代元素,使用迭代器修改元素
元素是跟在刚才迭代的元素后面的。(位置与预期不符)

B:集合遍历元素,集合修改元素(普通for)
元素在最后添加。

6.List集合的子类的使用

(1).vector类特有的功能:
添加功能:
public void addElement(Object obj)
获取功能:
public Object elementAt(int index)

代码实现:
public class Test {
public static void main(String[] args) {
Vector<String> v =new Vector<String>();
v.addElement("hello");
v.addElement("world");
v.addElement("java");
//遍历
for(int i=0;i<v.size();i++){
String s =v.elementAt(i);
System.out.println(s);
}
}
}
//输出结果
hello
world
java

(2).LinkedList类
添加功能:
public void addFirst(Object e)
public void addLast(Object e)
获取功能
public Object getFirst()
public Object getLast()
输出功能
public Object removeFirst()
public Object removeLast()

7.List集合基本操作

(1).list集合去重
代码实现:
public class Test {
public static void main(String[] args) {
List<String> lt =new ArrayList<String>();
lt.add("hello");
lt.add("world");
lt.add("java");
lt.add("world");
lt.add("java");
lt.add("world");
//去重
for(int i=0;i<lt.size();i++){
for(int j=i+1;j<lt.size();j++){
if(lt.get(i).equals(lt.get(j))){
lt.remove(j);
j--;
}
}
}
//重写遍历输出
for(String s:lt){
System.out.println(s);
}
}
}

原文地址:https://www.cnblogs.com/nwxayyf/p/9535765.html

时间: 2024-10-05 08:01:09

Java基础_List集合的相关文章

java基础之集合Set

1.集合 当向集合Set中增加对象时,首先集合计算要增加对象的hashcode,根据该值得到一个位置用来存放当前的对象,当在该位置没有一个对象存在的时候,集合set认为该对象在集合中不存在,直接增加进去.如果在该位置有一个对象存在,接着将准备增加到集合中的的对象与该位置上的对象进行equals比较,若返回false,在进行一次散列,将该对象放到散列后计算出的新地址.若返回true,不会再将该对象增加到集合中 2.当重写equals方法时,必须要重写hashcode方法 如果一个类的两个对象,使用

java基础之集合List-ArrayList、LinkedList、Vector的区别

PS:本篇博客主要参考jdk的底层源码,而非自己动手写代码. 请问ArrayList.LinkedList.Vector的区别 ①ArrayList底层实际上是采用数组实现的(并且该数组的类型的Object类型的) ②如果jdk6,采用Array.copyOf()方法来生成一个新的数组,如果是jdk5,采用的是System.arraycopy()方法(当添加的数据量大于数组的长度时候) ③List list = newArrayList()时,底层会生成一个长度为10的数组来存放对象 ④Arra

黑马程序员——java基础 ArrayList集合基本方法演示

java基础 ArrayList集合基本方法演示 import java.util.ArrayList; import java.util.Iterator; public class ArrayListDemos { public static void main(String[] args) { // 创建一个新的容器 ArrayList al = new ArrayList(); al.add("abc1"); al.add("abc2"); al.add(&

Java基础之 集合体系结构(Collection、List、ArrayList、LinkedList、Vector)

Java基础之 集合体系结构详细笔记(Collection.List.ArrayList.LinkedList.Vector) 集合是JavaSE的重要组成部分,其与数据结构的知识密切相联,集合体系就是对数据结构的封装 数组与集合的比较 数组:长度固定,可以存储基本数据类型,也能存储对象 集合:长度可变,只能存储对象类型(由于有包装类的存在,集合可以存储任何类型) 集合的体系结构 集合也叫容器,用于存储对象 我们根据不同的需求和不同的数据结构来对集合做了不同的抽象 Collection接口-公共

JAVA基础学习-集合三-Map、HashMap,TreeMap与常用API

一.Map简述 1.1.简述 public interface Map<K,V> 类型参数: K - 此映射所维护的键的类型 key V - 映射值的类型 value 该集合提供键--值的映射.key不能重复,一对对的存储方式 将键映射到值的对象.一个映射不能包含重复的键:每个键最多只能映射到一个值. 1.2.方法 嵌套类摘要 static interface Map.Entry<K,V> 映射项(键-值对). 方法摘要 void clear() 从此映射中移除所有映射关系(可选操

JAVA基础之集合框架

集合框架(collections framework) 首先要明确,集合代表了一组对象(和数组一样,但数组长度不能变,而集合能).Java中的集合框架定义了一套规范,用来表示.操作集合,使具体操作与实现细节解耦. 其实说白了,可以把一个集合看成一个微型数据库,操作不外乎"增删改查"四种操作,我们在学习使用一个具体的集合类时,需要把这四个操作的时空复杂度弄清楚了,基本上就可以说掌握这个类了. 设计理念 主要理念用一句话概括就是:提供一套"小而美"的API.API需要对

黑马程序员-Java基础之集合(一)

集合框架:用于存储数据的容器. 特点: 1:对象封装数据,对象多了也需要存储.集合用于存储对象. 2:对象的个数确定可以使用数组,但是不确定怎么办?可以用集合.因为集合是可变长度的. 集合和数组的区别: 1:数组是固定长度的:集合可变长度的. 2:数组可以存储基本数据类型,也可以存储引用数据类型:集合只能存储引用数据类型. 3:数组存储的元素必须是同一个数据类型:集合存储的对象可以是不同数据类型.   数据结构:就是容器中存储数据的方式. 对于集合容器,有很多种.因为每一个容器的自身特点不同,其

java基础系列--集合类库(一)

原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/7229478.html 1.概述 Java的集合类库很是丰富,囊括了大部分的常见数据结构形式,让我们可以有目的性的选择适合当前业务场景和功能场景的集合类.合适的集合框架可以最大程度的提升执行速度和效率. Java集合类库中所有的集合类都始于Collection接口和Map接口,前者表示单值集合,后者表示映射集合(双值集合). Java集合框架中的Abstract开头的抽象类,其实是JDK开

JAVA基础接口集合框架

接口--------------------------------------------------------------------------------一.接口(是一种规范)1.接口名/接口文件与类类似,也是用.java文件编写2.关键字 interface 接口名命名规范与类名相同 习惯上可以使用I开头表示3. 接口额访问修饰符只能使用public和default修饰不能使用private和protected在接口中默认缺省为public4.接口中的所有属性只能为公开的静态的常量而