Javase day09_集合

集合

组:定长的 可以存放相同类型的数据 数据可以是基本类型也可以是引用类型 访问速度比较快 集合:可变长 只能存放引用类型 访问速度比数组会稍慢一些
java.util包里
set 无序(存和取得顺序)不允许重复(相同的只保存一个)可用来去重复
list 有序(存和取),允许重复(经常用于保存从数据库中查询的数据)
map key,value形式 13904001139 object
key 不允许重复 (缓存用户数据)
如果有相同key的,新的会覆盖旧的

package com.neuedu.day09;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.ListIterator;
import java.util.Set;
import java.util.TreeSet;

import org.junit.Test;

import com.neuedu.day04.Student;


public class JiHe {
	@Test
	public void myTest01() {
		Set stus = new HashSet();// set类型
		stus.add("张三");// 添加
		stus.add(15);
		stus.add(134.14f);
		System.out.println(stus);
		stus.remove(15);// 删除15
		System.out.println(stus);
		System.out.println(stus.size());// stus的长度
	}
@Test

public void myTest02() {
	List stus = new ArrayList();// list
	stus.add("张三");// 添加
	stus.add(15);
	stus.add(134.14f);
	System.out.println(stus);
	stus.remove(0);// 删除第一个数据
	// list的remove 传递的是下标值,从0开始
	System.out.println(stus);
	System.out.println(stus.size());// stus的长度
}

批量 addAll removeAll了解


@Test
public void myTest03() {
	Set stus = new HashSet();// set类型
	stus.add("张三");// 添加
	stus.add(15);
	stus.add(134.14f);

	Set stus2 = new HashSet();// set类型
	stus2.add("新添加");// 添加
	stus2.addAll(stus);
	System.out.println(stus2);
	stus2.removeAll(stus2);// 删除
	System.out.println(stus2);
}
@Test
public void myTest04() {
	List stus = new ArrayList();// set类型
	stus.add("张三");// 添加
	stus.add(15);
	stus.add(134.14f);

	List stus2 = new ArrayList();// set类型
	stus2.add("新添加");// 添加
	stus2.addAll(stus);
	System.out.println(stus2);
	stus2.removeAll(stus2);// 删除15
	System.out.println(stus2);
}
@Test
	public void myTest05() {
		Set stus = new HashSet();// set类型
		stus.add("张三");// 添加
		stus.add(15);
		stus.add(134.14f);
		// 1.加强for(foreach)
		// for(循环到每个数据的类型 别名:循环对象)
		for (Object stu : stus) {
			System.out.println(stu);
		}
	}

iterator

@Test
	public void myTest06() {
		Set stus = new HashSet();
		Student sh = new Student();
		sh.setStuName("shenhao");
		sh.setStuNo(12);
		sh.setClassno(80);

		Student jian = new Student();
		jian.setStuName("jian");
		jian.setStuNo(13);
		jian.setClassno(85);

		stus.add(sh);
		stus.add(jian);
		// 1、加强for(foreach)
		// for(循环到的每个数据的类型 别名:循环对象)
		for (Object stu : stus) {
			Student s = (Student) stu;
			System.out.println(s.getStuName());
			System.out.println(s.getClassno());
			System.out.println("-------------------");
		}

	}
@Test
public void myTest08() {
	Set stus = new HashSet();
	stus.add(13);
	stus.add(14);
	stus.add(15);
	// 获取itertor(迭代器)
	Iterator i = stus.iterator();
	// hasNext判断有没有下一条
	while (i.hasNext()) {
		// next方法指针下移,取出一条
		Object obj = i.next();
		System.out.println(obj);
		if ((int) obj == 13) {
			// 错误写法,引发异常
			// stus.remove(13);
			// 正确写法
			i.remove();
		}

	}
	System.out.println(stus);
}
@Test
	public void set01() {
		Set stus = new HashSet();
		stus.add("zhangsan");
		stus.add("lisi");
		stus.add("wangwu");
		System.out.println(stus);// Hashcode
	}
@Test
	public void set02() {
		// TreeSet按照自然顺序 数字从小到大,字母a-z
		Set stus = new TreeSet();
		stus.add("zhangsan");
		stus.add("lisi");
		stus.add("wangwu");
		System.out.println(stus);

		Set stus2 = new TreeSet();
		stus2.add("97");
		stus2.add("90");
		stus2.add("95");
		System.out.println(stus2);
	}

使用set集合,生成1-25之间不重复的7个随机整数

@Test
public void set03() {
	Set stus = new HashSet();
	while (true) {
		int s = (int) (1 + Math.random() * (25 - 1 + 1));
		stus.add(s);
		if (stus.size() == 7) {
			break;
		}
	}
	System.out.println(stus);
}
@Test
public void set04() {
	// 准备一个容器装生成的七位数
	Set s = new HashSet();
	while (s.size() < 7) {
		int i = (int) (1 + Math.random() * (25 - 1 + 1));
		s.add(i);
	}
	System.out.println(s);

}

// RetainAll 保留

// RemoveAll 删除

// Contain(“张三”) 是否存在

// ArrayList(常用 查询所有返回到页面) 基于数组实现的 查询比较快

// linkedList 基于链表的 他插入修改删除比较快

// 栈(先进后出) 队列(先进先出)

// Vector线程安全的,速度慢

@Test
	public void list01() {
		// add addAll
		Student st = new Student();
		st.setStuName("张三");
		st.setStuNo(13);
		st.setClassno(85);

		Student st1 = new Student();
		st1.setStuName("李四");
		st1.setStuNo(13);
		st1.setClassno(85);

		List<Student> list = new ArrayList();
		list.add(st);
		list.add(st1);
		// 整体循环迭代
		for (Student obj : list) {
			System.out.println(obj.getStuName());
		}
		// 单条读取
		Student st_obj = list.get(0);
		System.out.println(st_obj.getStuName());
		// remove remveAll
		st.setStuNo(14);
		for (Student obj : list) {
			System.out.println(obj.getStuNo());
		}
		// list.remove(0);
		list.remove(st);
		for (Student obj : list) {
			System.out.println(obj.getStuName());
		}
		// contains 检测是否存在
		boolean flag = list.contains(st);
		System.out.println(flag);
		// get(新增)
		// size
	}

// 顺序列表ArrayList中存储的元素是整形数字1-5,通过循环放置数据 // 用(foreach和iterator两种方式)遍历每个元素,将每个元素顺序输出

@Test
	public void list02() {
		List<Integer> list = new ArrayList();
		int i = 0;
		while (true) {
			i++;
			list.add(i);
			if (list.size() == 5)
				break;
		}
		//用foreach读一下
		for (Object li : list) {
			System.out.println(li);
		}
		//用iterator读一下
		Iterator i1 = list.iterator();
		while (i1.hasNext()) {
			Integer i2 = (Integer) i1.next();
			System.out.println(i2);
		}
	}

ListIterator

@Test
	public void list03() {
		//第一种玩法 向正向取值,再反向读取
		Student zs =new Student();
		zs.setStuName("张三");
		zs.setStuNo(12);
		zs.setClassno(80);
		
		Student ls =new Student();
		ls.setStuName("李四");
		ls.setStuNo(13);
		ls.setClassno(85);
		
		List<Student> list = new ArrayList();
		list.add(zs);
		list.add(ls);
		ListIterator li=list.listIterator(list.size());
		//正向不读
		System.out.println("-----------");
		//反向读
		//循环先判断有没有上一条
		while(li.hasPrevious())
		{
			Student s=(Student) li.previous();
			System.out.println(s.getStuName());
		}
		
	}

//LinkedList

//addFirst addLast getFirst getLast removeFirst removeLast

@Test
	public void list04() {
		//第一种玩法 向正向取值,再反向读取
		Student zs =new Student();
		zs.setStuName("张三");
		zs.setStuNo(12);
		zs.setClassno(80);
		
		Student ls =new Student();
		ls.setStuName("李四");
		ls.setStuNo(13);
		ls.setClassno(85);
		
		LinkedList<Student> list = new LinkedList();
		list.add(zs);
		list.add(ls);
		
		Student ww=new Student();
		ww.setStuName("王五");
		ww.setStuNo(14);
		ww.setClassno(90);
		list.addFirst(ww);//加在第一
		
		Student zl=new Student();
		zl.setStuName("赵六");
		zl.setStuNo(16);
		zl.setClassno(95);
		list.addLast(zl);//加在最后
		
		list.removeFirst();//删除第一个
		list.removeLast();//删除最后一个
		for(Student stu:list)
		{
			System.out.println(stu.getStuName());
		}
		Student s=list.getFirst();
		System.out.println("第一个人是"+s.getStuName());
		
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值