Java类集框架

类集
传统数组可以保存多个数据,但存在长度问题,不得不使用数据结构,使用数据结构时存在诸多不便,比如数据结构的实现需要考虑多线程处理控制,而类集框架提供的接口则减少了开发中的困难
1.List接口

List<String> list = new List<String>();	
		
		list.add("1");
		
		list.add("2");
		
		list.add("2");
		
		list.forEach(
				(str)->{
					//提取list中的数据
					System.out.println(str +" ");
				}
				);

2.ArrayList 作为List的子类,继承了AbstractList抽象类,又实现了List中的接口

List<String> list = new ArrayList<String>();
		int str  = 0;
		System.out.println("数据是否为空:" + list.isEmpty()+",集合元素个数:"+list.size());
		list.add("1");
		list.add("2");
		list.add("3");
		System.out.println("集合中是否包括:" + list.contains("3"));
		list.add("4");
		System.out.println("数据是否为空:"+list.isEmpty()+",集合元素个数:"+list.size());
		//获取索引处数据
		
		System.out.println("该索引"+str+"处数据为"+list.get(str));

3,利用ArrayList接口实现自定义类对象保存

package 类集框架;

import java.util.List;
import java.util.ArrayList;

class Member{
	private String name;
	private int age;
	public Member (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 boolean equals(Object obj) {
		if(this == obj) {
			return true;
		}
		if(obj == null) {
			return false;
		}
		if(!(obj instanceof Member)) {
			return false;
		}
		Member mem =(Member) obj;
		return  this.name.equals(mem.name) && this.age == mem.age;
	}
	
	@Override
	public String toString() {
		return "姓名:"+this.name+ ",年龄:" + this.age;
	}
}
public class frameWork2 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
			List<Member> all = new ArrayList<Member>();
			all.add(new Member("王明",90));
			all.add(new Member("张明",10));
			all.add(new Member("谢明",20));
			all.forEach(System.out::println);
			System.out.println("该数据是否包括:"+all.equals(new Member("王明",90)));
			all.remove(new Member("王明",90));
			System.out.println("再次确认该数据是否包括:"+all.equals(new Member("王明",90)));
			//输出现在集合内的数据
			all.forEach(System.out::println);
	}

}

4.LinkedList子类
与ArrayList 不同的 LinkedList实现了List接口外,也实现了Deque接口

package 类集框架;

import java.util.LinkedList;
import java.util.List;

public class frameWork6 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
			List<Object> link = new LinkedList<Object>();
			link.add("ma1");
			link.add(1);
			System.out.println(link);
	}

}

5.Vector类
非常熟悉的类,除了保持了原来的功能外,同时实现了List接口

List<String> list = new Vector<String>();

Set接口
set接口并没有对connection接口进行扩充,为了与List接口区别,set接口中不允许重复数据的加入

try{
			Set<String> all = Set.of("java", "java", "java");
		}catch(Exception e) {
			e.printStackTrace();
			MsgBox.showInfo("set接口中不能存在重复数据");
		}

在这里插入图片描述
1.HashSet
Set接口的子类,与Set最大的不同是不会因为加入重复数据而导致编译报错

Set<String> set = new HashSet<String>();
		set.add("java");
		set.add("java");
		set.add("python");
		set.add("Simple");
		set.forEach(System.out::println);

2.通过HashSet我们可以得知通过HashSet接口保存的数据存在无序性于是加入LinkedHashSet

System.out.println("/LinkedHashSet子类");
		Set<String> set2 = new LinkedHashSet<String>();
		set2.add("java");
		set2.add("java");
		set2.add("baidu");
		set2.add("tencent");
		set2.forEach(System.out::println);

3.TreeSet 按照字母大小排序

System.out.println("/TreeSet子类实现");
		Set<String> set3 = new TreeSet<String>();
		set3.add("java");
		set3.add("java");
		set3.add("c");
		set3.add("python");
		set3.add("c#");
		set3.forEach(System.out::println);

使用TreeSet保存自定义对象(实现了Comparable接口)

package 类集框架;

import java.util.Set;
import java.util.TreeSet;

class MemberTest implements Comparable <MemberTest>{
	private String name;
	private int age;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
	public MemberTest(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;
	}
	public String toString() {
		return "姓名;"+this.name + ",年龄:"+this.age;
	}
	@Override
	public int compareTo(MemberTest mem) {
		if(this.age < mem.age){
			return 1;
		}else if(this.age>mem.age) {
			return -1;
		}else {
			return this.name.compareTo(mem.name);
		}
	}
}

public class frameWork5 {
		public static void main(String [] args) {
			Set<MemberTest> list = new TreeSet<MemberTest>();
			list.add(new MemberTest("小明",90));
			list.add(new MemberTest("小王",80));
			list.add(new MemberTest("小红",70));
			list.add(new MemberTest("小红",70));
			list.forEach(System.out::println);
		}
}

重复元素删除(需要覆写equals() hashCode())

package 类集框架;

import java.util.HashSet;
import java.util.Set;

class MemberPath {
	private String name;
	private int age;
	public MemberPath(String name , int age) {
		this.name= name;
		this.age = age;
	}
	@Override
	public String toString() {
		return "姓名:"+this.name + ",年龄:"+this.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 boolean equals(Object obj) {
		if(this==obj) {
			return true;
		}
		if(obj == null) {
			return false;
		}
		if(this.getClass() != obj.getClass()) {
			return false;
		}
		MemberPath  mem = (MemberPath) obj;
		if(this.age != mem.age) {
			return false;
		}
		
		if(this.name == null) {
			if(mem.name != null) {
				return false;
			}
		}else if(!name.equals(mem.name)) {
			return false;
		}
			return true;
	}
	
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + age;
		result = prime * result + ((name == null)? 0 : name.hashCode());
		return result;
 	}
}
	
public  class frameWork4 {

	public static void main(String[] args) {
		Set<MemberPath> list = new HashSet<MemberPath>();
		list.add(new MemberPath("张三",90));
		list.add(new MemberPath("王五",80));
		list.add(new MemberPath("张三",90));
		list.forEach(System.out::println);
	}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值