您当前的位置: 首页 >  Java

梁云亮

暂无认证

  • 4浏览

    0关注

    1211博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Java集合

梁云亮 发布时间:2019-10-14 13:12:20 ,浏览量:4

Java集合

在这里插入图片描述

List

有序(输出的顺序与添加的顺序一致)、元素可以重复

  • ArrayList:查找速度快
  • LinkedList:添加删除速度快
示例1:
public static void main(String[] args) {
    //面向接口编程
    //接口变量指向实现类的对象
    //将实现类的对象赋值给接口类型的变量
    List list = new ArrayList();

    list.add("aa");
    list.add("cc");
    list.add("bb");
    list.add("aa");

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

    for (int i = 0; i o1.compareTo(o2));
    System.out.println(list);

    list.sort(String::compareTo);
    list.forEach(System.out::println);
}
示例4:产生不重复的[10,20)之间的10个随机数
  • 实现一:
public static void main(String[] args) {
    List data = new ArrayList(); //存储产生的随机数

    Random random = new Random();

    while (data.size()  System.out.print(item + " "));
}
  • 实现二:
public static void main(String[] args) throws IOException {//psvm
    List data = Arrays.asList(10,11,12,13,14,15,16,17,18,19);
    Collections.shuffle(data);//打轮顺序
    data.forEach(item->System.out.print(item+"\t"));
}
Set

无序、不能重复

示例:
public static void main(String[] args) {
    Set set = new HashSet();
    set.add("mazi");
    set.add("11");
    set.add("zhangsan");
    set.add("55");
    set.add("lisi");
    set.add("22");
    set.add("wanger");
    set.add("zz");
    set.add("mazi");

    System.out.println(set.size());
    
    for (String s : set) {
        System.out.print(s+" ");
    }

    System.out.println("\n---------------");
    Iterator iterator = set.iterator(); //迭代器
    while (iterator.hasNext()){
        System.out.print(iterator.next()+" ");
    }

    System.out.println("\n---------------");
    set.forEach(item->System.out.print(item+" "));

    System.out.println("\n---------------");
    set.forEach(System.out::println);
}
Collections

集合工具类

示例1:
public static void main(String[] args) {
    List list = new ArrayList();
    list.add("zhangsan");
    list.add("lisi");
    list.add("wanger");
    list.add("mazi");

    Collections.shuffle(list);//打乱顺序为随机,每次都不一样
    System.out.println(list);

    Collections.sort(list);//按照字典顺序
    System.out.println(list);
    Collections.sort(list,String::compareTo);//按照字典顺序
    System.out.println(list);

    List list2 = new ArrayList();
    Collections.addAll(list2,"aa","ee","ff","11","33","aa");
    System.out.println(list2);

    //二分法查找,要求待查询的集合是有序的,返回值为待查元素在有序列表中的位置
    Collections.sort(list2,String::compareTo);
    System.out.println(list2);
    int i = Collections.binarySearch(list2, "11");
    System.out.println(i);

    String max = Collections.max(list2);
    String min = Collections.min(list2);
    System.out.println(max+" "+min);

    Collections.reverse(list2);
    System.out.println(list2);

    Collections.replaceAll(list2,"aa","**");
    System.out.println(list2);
}
示例:对公司所有的部门进行排序(对象排序)
  • 实体类:
public class Dept  implements  Comparable{ // 所有参与排序的东西,必须是能够排序的
    private Integer deptno;
    private String dname;
    private String loc;

	//......getter/setter方法、默认构造方法、全参构造方法、toString方法

    @Override
    public int compareTo(Dept o) {
        return o.getDname().length()-this.getDname().length();
    }
}
  • 测试代码一:
public static void main(String[] args) {
    List depts = new ArrayList();
    depts.add(new Dept(10,"ACCOUNTING","NEWYORK"));
    depts.add(new Dept(40,"OPERATIONS","BOSTON"));
    depts.add(new Dept(20,"RESEARCH","DALLAS"));
    depts.add(new Dept(30,"SALES","CHICAGO"));

    Collections.sort(depts);  // 此处Dept类必须实现Comparable接口

    for (Dept dept : depts) {
        System.out.println(dept);
    }
}
  • 测试代码二
    public static void main(String[] args) {
        List depts = new ArrayList();
        depts.add(new Dept(10,"ACCOUNTING","NEWYORK"));
        depts.add(new Dept(40,"OPERATIONS","BOSTON"));
        depts.add(new Dept(20,"RESEARCH","DALLAS"));
        depts.add(new Dept(30,"SALES","CHICAGO"));
        
        depts.sort((o1,o2)->o1.getDname().compareTo(o2.getDname()));
        depts.forEach(System.out::println);

        Collections.sort(depts,(o1,o2)->o2.getDname().compareTo(o1.getDname()));
        depts.forEach(System.out::println);
    }
Map

键值对的集合。 键不能重复,值可以重复。 在这里插入图片描述

示例一:
public static void main(String[] args) {
   Map map = new HashMap();
   map.put("zhangsan",88);
   map.put("lisi",86);
   map.put("wanger",92);
   map.put("mazi",63);

    Set entries = map.entrySet();
    for(Map.Entry entry : entries){
        System.out.println(entry.getKey() + " : " + entry.getValue());
    }

    Set keys = map.keySet();
    for(String key : keys){
        Integer value = map.get(key);
        System.out.println(key+" "+value);
    }

    map.forEach((k,v)->System.out.println(k+" ● "+v));
}
示例二:
public static void main(String[] args) throws IOException {// psvm
	Map map = new HashMap();
	
	map.put("181107410027", "zhangsan");
	map.put("231412343124", "lisi");
	map.put("324554656765", "wanger");
	map.put("654789870980", "mazi");
	
	String v1 = map.get("654789870980");
	System.out.println(v1);
	
	for(String key : map.keySet()) {
		String v = map.get(key);
		System.out.println(key +"\t"+v);
	}
	
	Collection values = map.values();
	for(String item : values) {
		System.out.println(item);
	}
	
	Set entrySet = map.entrySet();
	for(Entry entry: entrySet) {
		System.out.println(entry.getKey()+"\t"+entry.getValue());
	}
	
}
排值日表
	public static void main(String[] args) throws IOException {// psvm
		Map map = new HashMap();
		
		map.put("181107410027", "zhangsan");
		map.put("231412343124", "lisi");
		map.put("324554656765", "wanger");
		map.put("654789870980", "mazi");
		
		Set keySet = map.keySet();//获取所有key的集合
		String[] array = keySet.toArray(new String[0]); //将Set转为数组
		
		List list = Arrays.asList(array);//将数组转为List
		Collections.shuffle(list);//打乱List的顺序
	
		for(String item: list) {
			String value = map.get(item);
			System.out.println(value);
		}
		
	}
关注
打赏
1665409997
查看更多评论
立即登录/注册

微信扫码登录

0.0454s