JAVA集合框架测试题

Java集合题目

产生10个1-100的随机数,并放到一个数组中,把数组中大于等于10的数字放到一个list集合中,并打印到控制台

public static void main(String[] args) {
    
    
        Random r=new Random(System.currentTimeMillis());
        int[] arr=new int[10];
        ArrayList arrayList=new ArrayList();
        for (int i=0;i<10;i++){
    
    
            arr[i]=r.nextInt(100);
            if (arr[i]>=10){
    
    
                arrayList.add(arr[i]);
            }
        }
        System.out.println(arrayList);
        }
        }

假设顺序列表ArrayList中存储的元素是整型数字1~5,请使用你所知的所有方法遍历每个元素,将每个元素顺序输出

public static void main(String[] args) {
    
    
        List list=new ArrayList();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        list.add(5);
        System.out.println(list);
    }

从控制台输入若干行英文内容(输入回车一行结束,输入quit表示输入完成)以单词的方式放入集合中,将这些单词忽略大小写按照出现次数自然排序,如果次数相等,则按照字母顺序倒序后打印出来

public static void main(String[] args) throws Exception {
    
    
		try (BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) {
    
    
			List<WordNum> list=new ArrayList<WordNum>();
			while (true) {
    
    
				String ss = br.readLine();
				if ("quit".equalsIgnoreCase(ss))
					break;
				String[] arr=ss.toLowerCase().split(" ");
				for(String temp:arr) {
    
    
					if(temp!=null && temp.trim().length()>0) {
    
    
						WordNum wn=new WordNum(temp);
						int pos=list.indexOf(wn);
						if(pos!=-1) {
    
    
							wn=list.get(pos);
							wn.addNum();
						}else {
    
    
							list.add(wn);
						}
						
					}
				}
			}
			Collections.sort(list,(obj1,obj2)->{
    
    
				int res=0;
				if(obj1!=null && obj2!=null) {
    
    
					res=obj1.getNum()-obj2.getNum();
					if(res==0) {
    
    
						res=obj2.getWord().compareTo(obj1.getWord());
					}
				}
				return res;
			});
			list.forEach(System.out::println);
		}
	}
}

class WordNum {
    
    
	private String word;
	private int num = 1;

	public WordNum(String word) {
    
    
		this.word = word;
	}

	public void addNum() {
    
    
		this.num++;
	}

	public int getNum() {
    
    
		return num;
	}

	public String getWord() {
    
    
		return word;
	}

	@Override
	public String toString() {
    
    
		return "WordNum [word=" + word + ", num=" + num + "]";
	}

	@Override
	public int hashCode() {
    
    
		final int prime = 31;
		int result = 1;
		result = prime * result + ((word == null) ? 0 : word.hashCode());
		return result;
	}
	public boolean equals(Object obj) {
    
    
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		WordNum other = (WordNum) obj;
		if (word == null) {
    
    
			if (other.word != null)
				return false;
		} else if (!word.equals(other.word))
			return false;
		return true;
	}
	
}

在一个列表中存储以下字串类型元素:apple,grape,banana,pear。
1.返回集合中的最大的和最小的元素。
2.将集合进行排序,并将排序后的结果打印在控制台上

public static void main(String[] args) {
    
    
        LinkedList<String> list = new LinkedList<String>();
        list.add("apple");
        list.add("grade");
        list.add("banana");
        list.add("pear");
        System.out.println("最小" + Collections.min(list));
        System.out.println("最大" + Collections.max(list));

        Collections.sort(list);
        for (String s : list) {
    
    
            System.out.println(s);
        }
    }

双色球规则:双色球每注投注号码由6个红色球号码和1个蓝色球号码组成。红色球号码从1—33中选择;蓝色球号码从1—16中选择;请随机生成一注双色球号码。(要求同色号码不重复)

 public static void main(String[] args) {
    
    
        Ball[] reds=new Ball[33];
        for (int i=1;i<33;i++)
            reds[i-1]=new Ball(i);
        Ball[] blues=new Ball[16];
        for (int i=1;i<=16;i++)
            blues[i-1]=new Ball(i,BallColor.BlUE);
        Random r=new Random();
        Set<Ball> set=new TreeSet<>();
        set.add(blues[r.nextInt(blues.length)]);
        while (set.size()<7){
    
    
            set.add(reds[r.nextInt(reds.length)]);
        }
        set.forEach(System.out::println);

    }
}
class Ball implements Comparable<Ball> {
    
    
    private int no;
    private BallColor color;
    private Ball(){
    
    
        super();
    }
    public Ball(int no){
    
    
        this(no,BallColor.RED);
    }
    public Ball(int no,BallColor color){
    
    
        this.no=no;
        this.color=color;
    }
    @Override
    public String toString() {
    
    
        return "Ball{" +
                "no=" + no +
                ", color=" + color +
                '}';
    }
    public int compareTo(Ball o){
    
    
        int res=this.color.compareTo(o.color);
        if (res==0){
    
    
            res=this.no-o.no;
        }
        return res;
    }
    @Override
    public boolean equals(Object o) {
    
    
        if (this == o) return true;
        if (!(o instanceof Ball)) return false;
        Ball ball = (Ball) o;
        if (no != ball.no) return false;
        return color == ball.color;
    }
    @Override
    public int hashCode() {
    
    
        int result = no;
        result = 31 * result + (color != null ? color.hashCode() : 0);
        return result;
    }
}
enum BallColor{
    
    
    RED{
    
    
        public String toString(){
    
    
            return "红色";
        }
    },BlUE{
    
    
        public String toString() {
    
    
            return "蓝色";
        }
    }

已知有十六支男子足球队参加2008北京奥运会。写一个程序,把这16 支球队随机分为4 个组。
提示:采用List集合和随机数

public static void main(String[] args) {
    
    
        List<String> ls=new ArrayList<>();
        ls.add("英国");
        ls.add("阿根廷");
        ls.add("加拿大");
        ls.add("印度猴子");
        ls.add("荷兰");
        ls.add("德国");
        ls.add("日本");
        ls.add("美国");
        ls.add("中国");
        ls.add("新西兰");
        ls.add("巴西");
        ls.add("意大利");
        ls.add("韩国");
        ls.add("萨斯");
        ls.add("奥巴马");
        ls.add("特朗普");
        Random r=new Random();
        System.out.println("一组:");
        for(int i=16;i>12;i--){
    
    
            int a=r.nextInt(i);
            System.out.println(ls.get(a));
            ls.remove(a);
        }
        System.out.println("二组");
        for (int i=12;i>8;i--){
    
    
            int a=r.nextInt(i);
            System.out.println(ls.get(a));
            ls.remove(a);
        }
        System.out.println("三组");
        for (int i=8;i>4;i--){
    
    
            int a=r.nextInt(i);
            System.out.println(ls.get(a));
            ls.remove(a);
        }
        System.out.println("四组");
        for (int i=4;i>0;i--){
    
    
            System.out.println(ls.get(i-1));
        }
    }

产生10个1-20之间的随机数要求随机数不能重复

public static void main(String[] args) {
    
    
        Random r=new Random();
        HashSet<Integer> hs = new HashSet<Integer>();//创建set集合
        while(hs.size()<10){
    
    
            hs.add(r.nextInt(20)+1);
        }
        for (Integer integer : hs) {
    
    
            System.out.println(integer);
        }

    }

现在有一个map集合如下:
Map<Integer,String> map = new HashMap<Integer,String>();
map.put(1, “张三丰”); map.put(2, “周芷若”); map.put(3, “汪峰”); map.put(4, “灭绝师太”);
要求:
遍历集合,并将序号与对应人名打印。
向该map集合中插入一个编码为5姓名为李晓红的信息
移除该map中的编号为1的信息
将map集合中编号为2的姓名信息修改为"周林"

public static void main(String[] args) {
    
    
        Map<Integer, String> map = new HashMap<Integer, String>();
        map.put(1, "张三丰");
        map.put(2, "周芷若");
        map.put(3, "汪峰");
        map.put(4, "灭绝师太");
        System.out.println(map);
        map.put(5, "李小红");
        System.out.println(map);
        map.remove(1);
        System.out.println(map);
        map.put(2, "周琳");
        System.out.println(map);

        Set<Integer> set = map.keySet();
        Iterator<Integer> it = set.iterator();
        while (it.hasNext()) {
    
    
            Integer key = it.next();
            System.out.println("序号为:" + key + "姓名为:" + map.get(key));
        }
    }

有2个数组,第一个数组内容为:[黑龙江省,浙江省,江西省,广东省,福建省],第二个数组为:[哈尔滨,杭州,南昌,广州,福州],将第一个数组元素作为key,第二个数组元素作为value存储到Map集合中。如{黑龙江省=哈尔滨, 浙江省=杭州, …}。

 public static void main(String[] args) {
    
    

        String[] a={
    
    "河南省","浙江省","江西省","广东省","福建省"};
        String[] b={
    
    "郑州","杭州","南昌","广州","福州"};
        Map<String, String> map = new HashMap<>();
        for (int i = 0; i<a.length ; i++) {
    
    
            String ka=a[i];
            String kb=b[i];
            map.put(ka,kb);
        }
        System.out.println(map);
    }

定义一个类型为String类型的List集合,统计该集合中每个字符(注意,不是字符串)出现的次数。例如:集合中有”abc”、”bcd”两个元素,程序最终输出结果为:“a= 1,b = 2,c = 2,d = 1”

public static void main(String[] args) {
    
    
        String ss=new String("zhanghaosushe");
        HashMap<Character,Integer> map=new HashMap<>();
        char[] s=ss.toCharArray();
        for (char ch:s){
    
    
            if (map.containsKey(ch)){
    
    
                map.put(ch,map.get(ch)+1);
            }else {
    
    
                map.put(ch,1);
            }
        }
        System.out.println(map);
    }

猜你喜欢

转载自blog.csdn.net/w2903265477/article/details/114333085