zoukankan      html  css  js  c++  java
  • Collection集合、List接口、set接口

    一、集合概述

    集合:集合是java中提供的一种容器,可以用来存储多个数据。
    集合和数组既然都是容器,它们有啥区别呢?
    * 数组的长度是固定的。集合的长度是可变的。
    * 数组中存储的是同一类型的元素,可以存储基本数据类型值。

    集合存储的都是对象。而且对象的类型可以不一致。在开发中一般当对象多的时候,使用集合进行存储。

    集合按照其存储结构可以分为两大类,分别是单列集合`java.util.Collection`和双列集合`java.util.Map`,今天我们主要介绍`Collection`集合。

    Collection:单列集合类的根接口,用于存储一系列符合某种规则的元素

    它有两个重要的子接口,分别是`java.util.List`和`java.util.Set`。

    其中,`List`的特点是元素有序、元素可重复。`Set`的特点是元素无序,而且不可重复。

    `List`接口的主要实现类有`java.util.ArrayList`和`java.util.LinkedList`,

    `Set`接口的主要实现类有`java.util.HashSet`和`java.util.TreeSet`。

     1)Collection常用方法

    public boolean add(E e):  把给定的对象添加到当前集合中 。
    public void clear() :清空集合中所有的元素。
    public boolean remove(E e): 把给定的对象在当前集合中删除。
    public boolean contains(E e): 判断当前集合中是否包含给定的对象。
    public boolean isEmpty(): 判断当前集合是否为空。
    public int size(): 返回集合中元素的个数。
    public Object[] toArray(): 把集合中的元素,存储到数组中。

    import java.util.ArrayList;
    import java.util.Collection;
    
    public class Demo1Collection {
        public static void main(String[] args) {
    		// 创建集合对象 
        	// 使用多态形式
        	Collection<String> coll = new ArrayList<String>();
        	// 使用方法
        	// 添加功能  boolean  add(String s)
        	coll.add("小李广");
        	coll.add("扫地僧");
        	coll.add("石破天");
        	System.out.println(coll);
    
        	// boolean contains(E e) 判断o是否在集合中存在
        	System.out.println("判断  扫地僧 是否在集合中"+coll.contains("扫地僧"));
    
        	//boolean remove(E e) 删除在集合中的o元素
        	System.out.println("删除石破天:"+coll.remove("石破天"));
        	System.out.println("操作之后集合中元素:"+coll);
        	
        	// size() 集合中有几个元素
    		System.out.println("集合中有"+coll.size()+"个元素");
    
    		// Object[] toArray()转换成一个Object数组
        	Object[] objects = coll.toArray();
        	// 遍历数组
        	for (int i = 0; i < objects.length; i++) {
    			System.out.println(objects[i]);
    		}
    
    		// void  clear() 清空集合
    		coll.clear();
    		System.out.println("集合中内容为:"+coll);
    		// boolean  isEmpty()  判断是否为空
    		System.out.println(coll.isEmpty());  	
    	}
    }
    

    二、list集合  

    List集合的特点:

    1、有序集合

    2、带有索引,通过索引可以精确的操作集合中元素

    3、集合中可以有重复的元素,通过元素的equals方法,来比较是否为重复的元素。

    常用方法

    public class Test {
    	public static void main(String[] args) {
    		//创建list集合
    		List<String> list=new ArrayList<String>();
    		//往尾部添加指定元素
    		list.add("图图");
    		list.add("小妹");
    		list.add("不高兴");
    		//add(int index,String s)往指定位置添加
    		list.add(1,"没头脑");
    		//String remove(int index)删除指定位置的元素,返回被删除元素
    		System.out.println(list.remove(2));
    		//String set(int index,String s) 修改指定位置的元素
    		list.set(0, "三毛");
    		//跟size()方法一起用来遍历
    		for(int i=0;i<list.size();i++){
    			System.out.print(list.get(i)+"  ");
    		}
    		System.out.println();
    		//使用增强for遍历
    		for(String string:list){
    			System.out.print(string+"  ");
    		}
    			
    		
    		
    	}
    	  

    list的子类

    1)ArrayList集合

    java.util.ArrayList<E>类:该类需要导入后使用

    <E>表示一种指定的数据类型,叫做泛型,表示我们要存储哪种引用类型的元素。

    ArrayList<String>,ArrayList<Student>

    基本格式:

     2)LinkedList集合

     

     

    public class LinkedListDemo {
    	public static void main(String[] args) {
    		LinkedList<String>  link=new LinkedList<String>();
    		//添加元素
    		link.addFirst("abc1");
    		link.addFirst("abc2");
    		link.addFirst("abc3");
    		System.out.println(link);
    		//获取元素
    		System.out.println(link.getFirst());
    		System.out.println(link.getLast());
    		//删除元素
    		System.out.println(link.removeFirst());
    		System.out.println(link.removeLast());
    		while(!link.isEmpty()){//判断集合是否为空
    			System.out.println(link.pop());//弹出集合中的栈顶元素
    		}
    		System.out.println(link);			
    	}	
    
    	}
    

     

     3)set集合

    set集合特点

    1、无序

    2、不重复

    Set集合子类

    1)hashSet集合

    public class HashSetDemo {
    	public static void main(String[] args) {
    		//创建set集合
    		HashSet<String> set=new HashSet<String>();
    		//添加元素
    		set.add(new String("abc"));
    		set.add("abc");
    		set.add("bca");
    		set.add("cba");
    //遍历set
    System.out.println(set); for(String string:set){ System.out.print(string+" "); } } }

     说明set中不能存储重复元素。

     HashSet存储自定义类型

    package test;
    
    import java.util.Objects;
    
    public class Student {
    	private String name;
    	private int age;
    	
    	public Student(String name,int age){
    		this.name=name;
    		this.age=age;
    		
    	}
    	public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    	public int getAge() {
    		return age;
    	}
    	public void setAge(int age) {
    		this.age = age;
    	}
    	
    	@Override
    	public String toString() {
    		return "Student [name=" + name + ", age=" + age + "]";
    	}
    	@Override
    	public int hashCode() {
    		return Objects.hash(name,age);
    	}
    	@Override
    	public boolean equals(Object obj) {
    		if (this == obj)
    			return true;
    		if (obj == null||getClass() != obj.getClass())
    			return false;
    		Student student = (Student) obj;
    		return age==student.age && Objects.equals(name,student.name);
    	}
    	
    
    }
    package test;
    
    import java.util.HashSet;
    
    public class test3 {
    	public static void main(String[] args) {
    		HashSet<Student> stuSet=new HashSet<Student>();
    		Student stu=new Student("于谦",43);
    		stuSet.add(stu);
    		stuSet.add(new Student("郭德纲",44));
    		stuSet.add(new Student("于谦",43));
    		stuSet.add(new Student("郭麒麟",23));
    		for(Student stu1:stuSet){
    			System.out.println(stu1);
    			
    		}			
    				
    	}
    
    }
    

    2)LinkedHashSet

    HashSet保证元素唯一,可是元素放进去没有顺序,保证元素有序,可以使用LinkedHashSet,它是链表和哈希表组合的一个数据存储结构。

    public class LinkedHashSetDemo {
    	public static void main(String[] args) {
    		//创建set
    		Set<String> set=new LinkedHashSet<String>();
    		set.add("bbb");
    		set.add("aaa");
    		set.add("abc");
    		set.add("bbc");
    		Iterator<String> it=set.iterator();
    		while(it.hasNext()){
    			System.out.println(it.next());
    		}
    	}	
    
    	}
    

     3)collections类

    java.utils.collections是集合工具类,用来对集合进行操作。

    1)常用方法

    public class CollectionDemo {
    	public static void main(String[] args) {
    		ArrayList<Integer> list=new ArrayList<Integer>();
    		//使用工具类一次性往集合中添加多个元素
    		Collections.addAll(list,5,222,1,2);
    		System.out.println(list);
    		//排序方法
    		Collections.sort(list);
    		System.out.println(list);	
    		
    	}	
    
    	}
    

     2)compare比较器

     

    public class CollectionDemo {public static void main(String[] args) {ArrayList<Integer> list=new ArrayList<Integer>();//使用工具类一次性往集合中添加多个元素Collections.addAll(list,5,222,1,2);System.out.println(list);//排序方法Collections.sort(list);System.out.println(list);}
    }

  • 相关阅读:
    并发编程
    进程的介绍
    操作系统详解
    进程的粗略理解
    打印进度条
    FTP上传下载文件(面向对象版)
    socket套接字
    FTP上传下载文件(函数简易版)
    osi七层协议 Open System Interconnection
    __str__和__repr__的区别
  • 原文地址:https://www.cnblogs.com/crystal1126/p/12699039.html
Copyright © 2011-2022 走看看