Java进阶总结——集合框架

Java进阶总结——集合框架

1.集合——List

1.1.Vector

/**

 * Vector  向量

 * 1.底层实现是数组

 * 2.实现了list接口

 * 3.list接口  有序的,可以重复,可以有null值

 * 4.支持多线程

 * */

 

在JDK2之前(在Java的集合框架之前),要存储多个数据,此时存在一个叫Vector类.

Vector类底层其实就是一个Object数组,Vector类中的方法是支持同步(方法使用synchronized修饰)的.

 

package day19.collection;

 

import java.util.Enumeration;

import java.util.List;

import java.util.Vector;

 

public class VectorDemo {

 

public static void main(String[] args) {

//初始化一个Vector对象

Vector<String> v=new Vector<String>();

//添加数据

v.add("qqq");

v.add("aas");

v.add("vfds");

v.add("qwas");

v.add("sadaz");

//在指定位置添加数据

v.add(1,"qpl");

//将集合中的元素添加到当前集合中

Vector<String>v1=new Vector<String>();

v1.add("111");

v1.addAll(v);

v1.addElement("尾部添加");

 

//修改元素

v1.set(0, "尊");//修改指定位置的元素

v1.setElementAt("林子", 2);

//查询

System.out.println("根据下标查询指定元素 "+v1.get(0));

System.out.println("根据内容返回第一次出现的索引 "+v1.indexOf("林子"));

System.out.println("根据内容返回最后一次出现的索引 "+v1.lastIndexOf("qpl"));

System.out.println("判断是否包含指定元素 "+v1.contains("尊"));

System.out.println("返回第一个位置的元素 "+v1.firstElement());

System.out.println("最后一次 "+v1.lastElement());

 

//删除元素

v1.remove(3);//根据索引删除元素

v1.remove("111");//根据元素删除,只删除第一次出现的元素

 

//遍历向量

System.out.println("遍历--------------------------");

System.out.print("[");

for (String string : v1) {

System.out.print(string+"\t");

}

System.out.println("]");

//枚举迭代器

//将向量转换成Enumeration对象

System.out.println("枚举-------------------");

Enumeration<String>enums=v1.elements();

while (enums.hasMoreElements()) {//判断枚举对象中是否有更多元素

String string = (String) enums.nextElement();//返回下一个元素

System.out.println(string);

}

//截取字序列

List<String>list=v1.subList(2, 5);

System.out.println("截取---------");

System.out.println(list);

}

}

输出结果:

1.2ArrayList

/**

 * ArrayList

 * 1.底层由数组实现

 * 2.有序的

 * 3.允许重复

 * 4.允许有null

 * 5.不支持同步

 * */

 

package day19.collection;

 

import java.util.ArrayList;

import java.util.Iterator;

import java.util.Vector;

 

class Student{

String name;

public Student() {

// TODO 自动生成的构造函数存根

}

public  Student(String name) {

this.name=name;

}

}

public class ArrayListDemo {

public static void main(String[] args) {

//初始化一个对象

ArrayList<String>list=new ArrayList<String>();//创建一个空的对象

//添加

list.add("qww");//在尾部添加一个元素

list.add("1qe");

list.add("2rr");

list.add("zzss");

list.add(null);

list.add(2, "快快快");//在指定位置添加

System.out.println(list.toString());

//修改,指定位置

list.set(0, "尊");

//删除

list.remove(3);//删除指定位置的元素

list.remove("2rr");//删除列表中指定首次出现的元素

System.out.println(list.toString());

Vector<String>v=new Vector<String>();

v.add("1qe");

v.add("hh");

//list.removeAll(v);//删除两个集合中相等的元素  删除交集

//list.clear();//删除全部

System.out.println(list.toString());

//查询

System.out.println("通过下标取值==="+list.get(1));

System.out.println("通过元素查找第一次出现的索引==="+list.indexOf("尊"));

System.out.println("通过元素查找最后一次出现的索引==="+list.lastIndexOf("尊"));

System.out.println("判断是否包含指定元素"+list.contains("hh"));

System.out.println("判断是否为空列表"+list.isEmpty());

 

//获取所有元素

for (String str : list) {

System.out.print(str+"  ");

}

System.out.println();

//方法二

for (int i = 0; i < list.size(); i++) {

String string = list.get(i);

System.out.print(string+"  ");

}

System.out.println();

//修改指定内容的元素

System.out.println("写修改----------");

for (int i = 0; i < list.size(); i++) {

String string = list.get(i);

if (string==null) {

continue;

}if (string.equals("尊")) {

list.set(i,"zjsz");

}

}

System.out.println(list.toString());

 

//删除指定元素

//初始化对象

ArrayList<Student>list1=new ArrayList<Student>();

list1.add(new Student("qq"));

list1.add(new Student("qqa"));

list1.add(new Student("qqz"));

//遍历成员

for (Student student : list1) {

System.out.print(student.name+"  ");

}

System.out.println();

 

//删除指定元素

//list.remove();

System.out.println("删除---------------");

/*for (int i = 0; i < list1.size(); i++) {

Student student=list1.get(i);

if (student==null) {

continue;

}if (student.name.equals("qqz")) {

list1.remove(i);

}

}*/

//foreach遍历删除

for (Student student : list1) {

//判断内容是否相等

if (student==null) {

continue;

}

//判断name

if (student.name.equals("qqa")) {

//list.remove(student);//无法删除

}

}

//通过迭代器

//1.获取迭代器对象

Iterator<Student>it=list1.iterator(); //迭代器是一个副本

boolean result=it.hasNext();//判断迭代器中是否还有更多的元素

//取出下一个元素

/*Student stu1=it.next();//每调用一次next就取出一个元素

System.out.println("name==="+stu1.name);*/

for (; it.hasNext();) {

Student stu1 = it.next();

System.out.println("name==="+stu1.name);

//删除元素

if (stu1!=null) {

if (stu1.name.equals("qq")) {

it.remove();//删除当前指针指向的对象

}

}

}

//查看

for (Student student : list1) {

System.out.print(student.name+"  ");

}

}

}

输出结果:

1.3LinkedList

/**

 * Linked特点实现了Deque、list接口的特性

 * 1.底层由链表实现 双向链表

 * 2.有序的

 * 3.允许重复

 * 4.允许有null

 * 5.具有队列和栈的特点

 * 6.不支持同步

 * */

 

package day19.collection;

 

import java.util.Iterator;

import java.util.LinkedList;

 

public class LinkedListDemo {

public static void main(String[] args) {

//初始化一个LinkedList对象

LinkedList<String>list=new LinkedList<String>();

//添加

list.add("浪子一秋");

list.add("一叶知秋");

list.add("葬剑山庄");

list.add("爱情公寓");

list.addFirst("落梅拂雪");//在头部添加

list.addLast("清风明月");//在尾部添加

list.push("呆萌师傅");//压栈,从入口放一个,头是栈顶

System.out.println(list.offer("独步天下"));//在尾部添加一个元素

System.out.println(list.offerFirst("武林至尊"));//在头部添加一个元素

System.out.println(list.offerLast("东方不败"));//在尾部添加一个元素

//list.pop();//出栈

System.out.println(list.toString());

//修改

list.set(6, "一醉千年");

System.out.println(list.toString());

//查询

String element=list.poll();//取出head元素,同时删除元素

System.out.println(element);

System.out.println(list.pollFirst());

System.out.println(list.getFirst());//取出第一个元素不删除

System.out.println(list.getLast());//取出最后一个元素

System.out.println(list.element());//取出第一个元素,不删除

 

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

System.out.println(list.indexOf("东方不败"));//首次出现元素的索引

for (Iterator iterator = list.iterator(); iterator.hasNext();) {

String string = (String) iterator.next();

System.out.println(string+" ");

}

 

System.out.println(list.toString());

//删除

list.remove();//删除头

list.remove(1);//通过索引删除

list.remove("清风明月");//删除首次出现的元素

System.out.println(list.toString());

//遍历删除必须使用迭代器

}

}

输出结果:

 

2.集合——Set

 

2.1HashSet

/**

 * HashSet特点

 * 1.元素是无序的

 * 2.不允许有重复的

 * 3.只允许一个null

 * 4.不支持同步

 * */

 

package day19.collection;

 

import java.util.HashSet;

import java.util.Iterator;

 

public class HashSetDemo {

public static void main(String[] args) {

// 1.创建HashSet对象

HashSet<String>set=new HashSet<String>();

//添加

set.add("夜尽天明");

set.add("夜尽天明");

set.add(new String("夜尽天明"));

set.add("诸子百家");

set.add("君临天下");

set.add(null);

System.out.println(set.toString());

//删除

set.remove(null);

//set.clear();//清空

System.out.println(set.toString());

//查看元素

System.out.println(set.size());//查看元素个数

System.out.println(set.isEmpty());//判断是否为空

System.out.println(set.contains("诸子百家"));//查看是否包含

//查看所有元素

for (String string : set) {

System.out.println(string);

}

//通过迭代器

//获取迭代器对象

System.out.println("迭代器------------");

Iterator<String>it=set.iterator();

while (it.hasNext()) {

String string = (String) it.next();

System.out.println(string);

//如果遍历删除,必须使用迭代器

it.remove();

}

System.out.println(set.isEmpty());

}

}

输出结果:

2.2TreeSet

/**

 * TreeSetDemo特点

 * 1.不允许有null

 * 2.不允许有重复元素

 * 3.添加的顺序是无序的

 * 4.内容可以排序

 * */

 

package day19.collection;

 

import java.util.Iterator;

import java.util.TreeSet;

 

public class TreeSetDemo {

 

public static void main(String[] args) {

//初始化一个TreeSet对象

TreeSet<Integer>set=new TreeSet<Integer>();

//添加

set.add(13);

set.add(11);

set.add(18);

set.add(6);

set.add(3);

//set.add(null);//不允许有null

//查看

System.out.println(set.contains(1));//是否包含指定的元素

System.out.println(set.isEmpty());//判断是否为空

System.out.println(set.size());//大小

System.out.println(set.first());//返回最小的元素

System.out.println(set.last());//返回最大的元素

System.out.println(set.lower(10));//以某个值为基准,返回小于该元素的临近数

System.out.println(set.higher(11));//返回临近的大数

System.out.println(set.toString());

//删除

System.out.println("删除-----------------");

set.remove(3);

System.out.println(set.pollFirst());//获取删除最小元素

System.out.println(set.pollLast());//大

System.out.println(set.toString());

//获取所有元素

System.out.println("foreach-----------------");

for (Integer integer : set) {

System.out.println(integer);

}

//迭代器

System.out.println("迭代器---------------------");

for (Iterator iterator = set.iterator(); iterator.hasNext();) {

Integer integer = (Integer) iterator.next();

System.out.println(integer);

}

}

}

输出结果:

4.知识框架

 

猜你喜欢

转载自blog.csdn.net/qq_41534115/article/details/81568475