欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Collection中的Set与list 的一些实际应用

程序员文章站 2022-07-12 20:43:01
...

Set:不包含重复元素

HashSet   不保证迭代顺序

TreeSet   集合中的元素按照自然顺序[或者指定的比较器]排序

 

import java.util.Iterator;
import java.util.TreeSet;
/**  做此题的关键是要知道TreeSet 是不包含重复元素,并将元素按照自然顺序排序的
 * 指定一个字符串 int[] a = {6,4,1,3,2,4,2,5,9,1,3,7,8};
 *	去掉数组中的重复数据,并排序,得到一个新数组
 */
public class Test {
	public static void main(String[]args){
		int a[]={6,4,1,3,2,4,2,5,9,1,3,7,8};
		//创建一个TreeSet  
	TreeSet<Integer> set=new TreeSet<Integer>();
	//利用循环来将a数组中的数据添加到TreeSet中
	for(int i=0;i<a.length;i++){
		set.add(a[i]);
	}
	//创建一个迭代器来输出TreeSet中的元素
	Iterator<Integer>  iter=set.iterator();
	while(iter.hasNext()){
		int s=iter.next();
		System.out.println(s);
	}

	}
}

 

 

 

List   有序的,可以重复的

ArrayList     长度可变的数组

LinkedList   链表 可以当做栈,队列和双端队列使用 

Stack          栈 后进先出  继承自Vector,基于数组的实现

Vector向量,长度可变的数组,主要用在多线程中

 

Random da=new  Random();

rd.nextInt(int n);

返回一个伪随机数,它是取自此随机数生成器序列的、

在 0(包括)和指定值(不包括)之间均匀分布的 int 值

API方法中可查的。

/**
 * 给定一个数组String[] a = {"长沙","株洲","湘潭","益阳","岳阳","常德"};
	随机中数组中取出一个城市,不允许取到重复的数据,最多6次取完所有的城市
 */

import java.util.ArrayList;
import java.util.Iterator;
import java.util.Random;

public class Test1 {
	public static void main(String[]args){
		String[] a={"长沙","株洲","湘潭","益阳","岳阳","常德"};
	    ArrayList<String>  list=new ArrayList<String>();
	    //创建一个随机数
	    Random rd=new Random();
	    //通过循环将数据添加到ArraList中
	    for(int i=0;i<a.length;i++){
	    	list.add(a[i]);	
	    }
	    //通过循环移除数据,a.length就为输出的次数
	    for(int i=0;i<a.length;i++){
	    //通过取得随机下标,此题的关键是rd.nextInt(list.size());
	    //每移除一个数据,list.size的长度会发生变化
	    //楼主开始做的时候想成是rd.nextInt(a.length);
	    //所以造成了越界  随机数方法的应用可见API文档  或者我的文章内容有提到
	    int index=rd.nextInt(list.size());
	    //将数据通过下标移除数据并将其输出
	    String s=list.remove(index);
	    System.out.println(s);
	    }

}
}

 

此题楼主做的时候并没有想到此方法,是根据老师说的方法来做的

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
/*
 * 给定一个字符串 String s="abbcccdddeeeefffffg";
 * 统计字符串中每个字符出现的次数
 */


/*
 * 解题关键:通过题目的要求我们要想到HashMap可以解决问题
 * 懂得运用charAt的方法
 * 通过contains判断在map中是否存在一个key为字符c
 * 每判断一次contains,存在就+1,在重新放回,直到判断完为止
 * 熟练运用HashSet的遍历方法[键 值 对]
 */

public class Test2 {
	public static void main(String[]args){
		String s="abbcccdddeeeefffffg";
		//创建一个HashMap<字符,次数>
		HashMap<Character,Integer> map=new HashMap<Character,Integer>();
		//依次取出字符串中的每一个字符
		for(int i=0;i<s.length();i++){
			char c=s.charAt(i);
			//判断map中是否有一个key为字符c
			if(map.containsKey(c)){
				int v=map.get(c);
				v++;
				//重新放回
				map.put(c, v);
			}
			else{
				//不存在的话,就只出现了一次
				map.put(c, 1);
			}
		}
		
		Set<Character> set=map.keySet();
		//创建Set的迭代器
		Iterator<Character> iter=set.iterator();
		while(iter.hasNext()){
			Character k=iter.next();
			//通过键获得对应的值
			int t=map.get(k);
			System.out.println(k+"的次数是:"+t);
		}
	}
}

 

每一次的总结都会有收获,Collection 中的知识不光要了解透彻,而且要学会熟练运用。 

 

  • Collection中的Set与list 的一些实际应用
            
    
    博客分类: Java基础 ArraListTreeSetRandomHashSetIterator
  • 大小: 17.5 KB