javaSE容器

本文深入解析Java中常用容器接口的功能,包括集合、映射、排序、迭代器、泛型、Map接口及其应用实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

 一、常用的容器接口:

1、一个图:collection(set,list);map;
2、set接口:无序不可重复;两个实现类:HashSet,TreeSet;
      格式:Set s=new HashSet();
      方法:add(Object o)仅有一个方法,retain(),
3、list接口:有序可重复;两个实现类:LinkedList,ArrayList;
      格式:List l=new LinkedList();List l=new ArrayList();
      方法:add(Object o);add(int i,Object o);
      l.add(1);表示往里面添加1;
      l.add(1,3);表示往容器第二个位置添加3;
      remove(int i),remove(非整型);
      l.remove(1);表示删除容器第二个元素;
      l.remove("2");表示删除容器内“2”的元素;
      l.set(int i,object o);
      l.set(2,4):表示把容器第三个元素替换成4;
4、Arrays排序和arraycopy();
     作用:针对数组排序问题,只有升序排序;
     运用:Arrays.sort(目标数组);
     输出:System.out.println(Arrays.toString(目标数组));
     arraycopy(源数组,源数组的起始位置,目标数组,目标数     组的起始位置,需要复制的数组长度);
5、打包和解包:
      定义:将基础类型转换成对象,这种叫打包;
                 将对象转换成基础类型,这种叫解包;
      例子:
      int a=100;
      Integer i=new Integer(a);//此时就叫打包;
      int b=i/new Integer(a);//此时就叫解包
6、Iterator接口:
     作用:简称迭代器,功能是遍历;
     方法:hasNext(),next(),remove();
     例子:
      Collection c=new ArrayList();
      c.add()......;如果这样是int型
      Iterator i=c.iterator();
      while(i.hasNext()){
         Integer in=(Integer)i.next();
}
7、泛型:(基础篇)
     格式:用<>加类型:<除基本类型除外>
8、Map接口:
     格式:Map(K,V);
     HashMap:无序,不可重复;
     TreeMap:按K键的大小来输出,同样不可重复;
     LinkedHashMap:按照代码先后顺序输出;
9、equals()与hashcode():
     作用:equals()比较是两个对象的值是否相等;
                hashcode()比较两个对象是否是同一个对象;

10、  Array读快改慢  
          Linked改快读慢

         Hash搜索极快,遍历极慢

         Tree插入/搜索都比较快,适合做索引

     

package test;

import java.util.*;

public class It2 {
	public static void main(String[] args) {
		Collection<Integer> c=new HashSet<Integer>();
		c.add(1);
		c.add(2);
		c.add(3);
		c.add(4);
		System.out.println(c);
		Iterator<Integer> i=c.iterator();
		while(i.hasNext()){
			int a=i.next();
			System.out.print(a);
		}
	}
}
输出结果:
[1, 2, 3, 4]
1234
package test;

import java.util.Arrays;

public class test {
	public static void main(String[] args) {
	int [] i={1,5,6,9,3,6};
	int [] m={2,3,4,4};
	String [] s={"2","1"};
	Arrays.sort(s);
	for (String a:s){
		System.out.println(a);
	}
		System.out.println(Arrays.toString(i));
		
		System.arraycopy(i,1,m,0,3);
		System.out.println(Arrays.toString(m));

	}
}
输出结果:
1
2
[1, 5, 6, 9, 3, 6]
[5, 6, 9, 4]
package test;

class Fanxing<T, V> {

	Fanxing(T name, V age) {
		this.age = age;
		this.name = name;
	}

	private T name;
	private V age;

	public T getName() {
		return name;
	}

	public V getAge() {
		return age;
	}

	public String toString() {
		return this.getName() + "  " + this.getAge();
	}

	public static void main(String[] args) {
		Fanxing<String, Integer> he = new Fanxing<String, Integer>("Rollen", 12);
		System.out.println(he.toString());

	}
}
输出结果:
Rollen  12
package test.cn;

import java.util.*;

public class Test03 {
	public static void main(String[] args) {
		Map<String,Integer> m=new LinkedHashMap<String,Integer>();
		m.put("小黄", 25);
		m.put("小米", 22);
		m.put("小话", 24);
		m.put("小花", 21);
		System.out.println(m);
	}

}

输出结果:
{小黄=25, 小米=22, 小话=24, 小花=21}
package test.cn;
import java.util.*;

public class Test03 {
	public static void main(String[] args) {
		Map<String,Integer> m=new TreeMap<String,Integer>();
		m.put("小黄", 25);
		m.put("小米", 22);
		m.put("小话", 24);
		m.put("小花", 21);
		System.out.println(m);
	}

}

输出结果:
{小米=22, 小花=21, 小话=24, 小黄=25}
第一题:
package com.baidu.cn;

public class Name {
    private String firstName,lastName;
    public Name(String firstName, String lastName) {
        this.firstName = firstName; 
        this.lastName = lastName;
    }
    public String getFirstName() {  
    	return firstName;  
    }
    public String getLastName() {   
    	return lastName;   
    }
    public String toString() {  
    	return firstName + ""+ lastName; 
    }
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result
				+ ((firstName == null) ? 0 : firstName.hashCode());
		result = prime * result
				+ ((lastName == null) ? 0 : lastName.hashCode());
		return result;
	}
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Name other = (Name) obj;
		if (firstName == null) {
			if (other.firstName != null)
				return false;
		} else if (!firstName.equals(other.firstName))
			return false;
		if (lastName == null) {
			if (other.lastName != null)
				return false;
		} else if (!lastName.equals(other.lastName))
			return false;
		return true;
	}
    
    
}
第二题:
package com.baidu.cn;

import java.util.*;

public class Test {

	public static void main(String[] args) {
       ArrayList al=new ArrayList();
       al.add(12);al.add(25);al.add(58);al.add(69);al.add("147");
       System.out.println(al);
       al.remove(1);
       System.out.println(al);
       al.remove("147");
       System.out.println(al);


	}

}
第三题:
package com.baidu.cn;

public class Test1 {

	public static void main(String[] args) {
		int a=100;
		Integer i=new Integer(a);
		System.out.println(i);
		 
		//解包
		int b=new Integer(a);
		System.out.println(b);

	}

}
第四题:
package com.baidu.cn;

import java.util.*;

public class Test2 {

	public static void main(String[] args) {
		Collection<Integer> c=new HashSet<Integer>();
		c.add(1);c.add(2);c.add(7);c.add(8);
		for(int d:c){
			System.out.println(d);
		}
//		System.out.println(c);
		
//		Iterator<Integer> i=c.iterator();
//		while(i.hasNext()){
//			Integer n= i.next();
//			System.out.println(n);
//		}

	}

}
第五题:
package com.baidu.cn;

import java.util.*;

public class Test3 {

	public static void main(String[] args) {
		 Map m=new TreeMap();
		 m.put(1, 2);
		 m.put(1, 2);
		 m.put(5, 6);
		 m.put(2, 3);
		 m.put(0, 6);
		 m.put(3, 10);
		 m.put(78, 3);
		 m.put(41, 2);
		 System.out.println(m);
	}

}
第六题:一个5位数,判断它是不是回文数。即12321是回文数,
      个位与万位相同,十位与千位相同。
package com.baidu.cn;

import java.util.Scanner;
/*
 * toCharArray();它可以把字符串类型转换成字符数组;
 */
public class Test4 {
	public static void main(String[] args) {
		Scanner s=new Scanner(System.in);
		System.out.println("请输入数字:");
		int a=s.nextInt();
		while(a>=10000 && a<=99999){
			String str=String.valueOf(a);
			char[] ch=str.toCharArray();
			if(ch[0]==ch[4] && ch[1]==ch[3]){
				System.out.println(str+"是回文数");
			}else{
				System.out.println("不是回文数");
			}
			break;
		}

	}

}
第七题:一个5位数,判断它是不是回文数。即12321是回文数,
       个位与万位相同,十位与千位相同。
package com.baidu.cn;

import java.util.Scanner;

public class Test5 {
   public static void main(String[] args) {
	  Scanner s=new Scanner(System.in);
	  System.out.println("请输入数字:");
	  int a=s.nextInt();
	  while(a>=10000 && a<=99999){
		  String str=String.valueOf(a);
		  StringBuffer sb=new StringBuffer(str);
		  StringBuffer s2=sb.reverse();
		  String m=String.valueOf(s2);
		  if(str.equals(m)){
			  System.out.println("是回文数");
		  }else{
			  System.out.println("不是回文数");
		  }
		  
		  System.out.println(s2);
		  break;
	  }
}
}
第八题:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...
       求出这个数列的前20项之和。
package com.baidu.cn;

public class Test6 {
   public static void main(String[] args) {
	  double a=2.0,b=1.0;
	  double sum=0;
	  for(int i=1;i<=20;i++){
		  sum=sum+a/b;
		  a=a+b;
		  b=a-b;
	  }
	  System.out.println(sum);
}
}
第九题:
package com.baidu.cn;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Test7 {
   public static void main(String[] args) {
	  String s="123abcd22xyz45";
//	  Pattern p=Pattern.compile("\\d");
//	  Matcher m=p.matcher(s);
//	  int sum=0;
//	  while(m.find()){
//		  String n=m.group();
//		  Integer i=Integer.parseInt(n);
//		  sum=sum+i;
//	  }
//	  System.out.println(sum);
	  int sum=0;
	  for(int i=0;i<s.length();i++){
		  char c=s.charAt(i);
		  if(Character.isDigit(c)){
			  sum=sum+(c-48);
		  }
	  }
	  System.out.println(sum);	  	  
}
}






 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值