集合应用#

1Collection 的遍历

public static void main(String[] args) {
		Collection c = new ArrayList();
		c.add("hello");
		c.add("world");
		c.add("java");
		Object[] objs = c.toArray();
		for(int x=0;x<objs.length;x++) {
		String s =(String)objs[x];
		//Object没有length()方法,我们要想用字符串的方法,就必须向下转型
		System.out.println(s+"  "+s.length());
		}	
	}
	}

2对于学生类Collection的遍历

	//学生类自己创
	Collection c = new ArrayList();
		student s1 = new student(12,"李康");
	    student s2 = new student(12,"李晓霞");
	    student s3 = new student(12,"李达" );
	    student s4 = new student(12,"李笑" );
	    student s5 = new student(12,"和英文" );
		c.add(s1);
		c.add(s2);
		c.add(s3);
		c.add(s4);
		c.add(s5);
		Object[] objs = c.toArray();
		for (int i = 0; i < objs.length; i++) {
			student s = (student)objs[i];
			System.out.println(s.getAge()+s.getName());
		}
		}	
	}
	
public static void main(String[] args) {
		Collection c = new ArrayList();
		student s1 = new student(12,"李康");
	    student s2 = new student(12,"李晓霞");
	    student s3 = new student(12,"李达" );
	    student s4 = new student(12,"李笑" );
	    student s5 = new student(12,"和英文" );
		c.add(s1);
		c.add(s2);
		c.add(s3);
		c.add(s4);
		c.add(s5);
		Iterator it = c.iterator();
		while(it.hasNext())	{
		student s = (student)it.next();
			System.out.println(s.getAge()+s.getName());
		}
		}	
	   }
}

list 的学生案例:

public static void main(String[] args) {
		List list = new ArrayList();
		student s1 = new student(12,"李康");
	    student s2 = new student(12,"李晓霞");
	    student s3 = new student(12,"李达" );
	    student s4 = new student(12,"李笑" );
	    student s5 = new student(12,"和英文" );
		list.add(s1);
		list.add(s2);
		list.add(s3);
		list.add(s4);
		list.add(s5);
		Iterator it = list.iterator();
		/*while(it.hasNext())	{
		student s = (student)it.next();
			System.out.println(s.getAge()+s.getName());
			for(int x=0; x<list.size(); x++) {
				student s =(student) list.get(x);
				System.out.println(s.getAge()+s.getName());
		
		*/
		}
		}	
		public static void main(String[] args) {
		
			List<student> list = new ArrayList<student>();
			student s1 = new student(12,"李康");
		    student s2 = new student(12,"李晓霞");
		    student s3 = new student(12,"李达" );
		    student s4 = new student(12,"李笑" );
		    student s5 = new student(12,"和英文" );
			list.add(s1);
			list.add(s2);
			list.add(s3);
			list.add(s4);
			list.add(s5);
			for(student s:list) {
				System.out.println(s.getName()+s.getAge());
			}
			
		}
			}	
	

对于ArrayList内的字符串重复获得单一:

public static void main(String[] args) {
		ArrayList list =new ArrayList();
		list.add("java");
		list.add("hehe");
		list.add("java");
		list.add("hehe");
		//方法1
		/*ArrayList newlist =new ArrayList();
		Iterator it = list.iterator();
		while(it.hasNext()) {
			String s = (String)it.next();
			if(!newlist.contains(s)) {
				newlist.add(s);
			}else {
		}
		}
		*///方法2
			for (int x = 0; x <list.size()-1; x++) {
			for(int y=x+1;y<list.size();y++)
            if(list.get(x).equals(list.get(y))) {
            	list.remove(y);
                y--;
	}	
	}
		for(int x=0;x<newlist.size();x++) {
			String sc = (String)newlist.get(x);
					System.out.println(sc);
		/*for(String s:newlist) {
		System.out.println(s);
	*/}

		}	
	}
		}	
	

要是在学生的去除中,要在学生类中加入equals方法,要不然比较地址值,则无法比较。
大集合学生类:

public static void main(String[] args) {
		ArrayList<ArrayList<student>> bigArrayList =new ArrayList<ArrayList<student>>();
		ArrayList<student>	firstArrayList = new ArrayList<student>();
		student s1 =new student(18,"唐三");
	    firstArrayList.add(s1);
	    ArrayList<student>  secondArrayList = new  ArrayList<student>();
	    student ss1=new student(20, "小艾");
	    secondArrayList.add(ss1);
	    ArrayList<student>  thirdArrayList=new ArrayList<student>();
	    student sss1=new student(22, "李明");
	    thirdArrayList.add(sss1);
	    bigArrayList.add(firstArrayList);
	    bigArrayList.add(secondArrayList);
	    bigArrayList.add(thirdArrayList);
	  for(ArrayList<student>array :bigArrayList) {
		  for(student s :array) {
			  System.out.println(s.getAge()+"  "+s.getName());
		  }
	  }
	}
			
		}
			

产生10个1~20的随机数

public static void main(String[] args) {
		Random r = new Random();
		ArrayList<Integer>array = new ArrayList<Integer>();
		int count =0;
		while(count<10) {
			int number = r.nextInt(20)+1;
			if (!array.contains(number)) {
				array.add(number);
				count++;
			}
		}
		/*HashSet<Integer>array = new HashSet<Integer>();
		while(array.size()<10) {
			int number = r.nextInt(20)+1;
			array.add(number);
			}
		 for(Integer s:array) {
			 System.out.println(s);
		 */for(Integer s:array) {
			 System.out.println(s);
		 }
	}
	  
	}

方法二:使用集合的toArray()方法`去是集合转化为

 List<String> list = new ArrayList<>();
    list.add("hello");
    list.add("hi");
    list.add("nihao");
    String[] array = list.toArray(new String[0]);

**

C:键盘录入多个数据,以0结束,并在控制台输出最大值**:

public static void main(String[] args) {
	Scanner sc =new Scanner(System.in);
	ArrayList<Integer> array = new ArrayList<Integer>();
	while(true) {
	System.out.println("请输入数据");
	int number =sc.nextInt();
	if(number!=0) {
		array.add(number);
	}else {
		break;}
	}
	Integer[] arr=array.toArray(new Integer[array.size()]);
	Arrays.sort(arr);
	System.out.println("数组"+arraytoString(arr)+"最大值"+arr[arr.length-1]);
	}
	public static String arraytoString(Integer[] arr) {
		StringBuilder sb =new StringBuilder();
		sb.append("[");
		for (int i = 0; i < arr.length; i++) {
			if(i==arr.length-1) {
		   sb.append(arr[i]).append("]");
			}else {
				sb.append(arr[i]).append(",");
			}
	}
	return sb.toString();
}
	  
	}
			

对于TreeSet的接口比较`

public int compareTo(student s) {
			int num =this.name.length()-s.name.length();
			int num2=num==0?this.name.compareTo(s.name):num;
			int num3=num2==0?this.age-s.age:num2;
			return num3;
		}	

对于录入5个学生信息:

public static void main(String[] args) {
    TreeSet<student> sc = new TreeSet<student>(new Comparator<student>() {
	public int compare(student s1, student s2) {
		int num =s1.getsum()-s2.getsum();
        int num2=num==0?s1.getChinese()-s2.getChinese():num;
        int num3=num2==0?s1.getEnglish()-s2.getEnglish():num2;
        int num4=num3==0?s1.getMath()-s2.getMath():num3;
        int num5=num4==0?s1.getName().compareTo(s2.getName()):num4;
        return num5;		
	} 
    });
	for(int x=1;x<=5;x++) {
		Scanner s =new Scanner(System.in);
		System.out.println("请输入"+x+"个学生的姓名");
		String name = s.nextLine();
		System.out.println("请输入"+x+"个学生的语文成绩");
		String chineString= s.nextLine();
		System.out.println("请输入"+x+"个学生的数学成绩");
		String mathString = s.nextLine();
		System.out.println("请输入"+x+"个学生的英语成绩");
		String engString = s.nextLine();
		student st = new student();
		st.setName(name);
		st.setChinese(Integer.parseInt(chineString));
		st.setEnglish(Integer.parseInt(engString));
	    st.setMath(Integer.parseInt(mathString));
	    sc.add(st);
	}
	System.out.println("学生信息录入完毕");
	System.out.println("学生成绩从高到低排如下");
	System.out.println("姓名\t语文成绩\t数学成绩\t英语成绩");
	for(student i:sc) {
		System.out.println(i.getName()+"\t"+i.getChinese()+"\t"+i.getMath()+"\t"+i.getEnglish());
	}
	} 
   
}	//student类
public class student {
   private String name;
   private int chinese;
   private int math;
   private int english;

   public student() {
	super();
	// TODO Auto-generated constructor stub
}
public student(String name, int chinese, int math, int english) {
	super();
	this.name = name;
	this.chinese = chinese;
	this.math = math;
	this.english = english;
}
public String getName() {
	return name;
}
public void setName(String name) {
	this.name = name;
}
public int getChinese() {
	return chinese;
}
public void setChinese(int chinese) {
	this.chinese = chinese;
}
public int getMath() {
	return math;
}
public void setMath(int math) {
	this.math = math;
}
public int getEnglish() {
	return english;
}
public void setEnglish(int english) {
	this.english = english;
}
  public int getsum() {
	   return this.chinese+this.english+this.math;
   }
	
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值