当前位置: 首页 > article >正文

12.08Java

今天学习了Java基本集合接口 

 

public static void main(String[] args) {
		int a[]= {3,4,1,8,7,9,10,2,5,6};
		int b[]= new int[10];
		System.arraycopy(a, 2, b, 7, 3);
		Arrays.sort(a);
		for (int i = 0; i < b.length; i++) {
			System.out.print(b[i]+" ");
		}
		System.out.println();
		for (int i = 0; i < a.length; i++) {
			System.out.print(a[i]+" ");
		}
		

	}
public static void main(String[] arg) {
		int a[]= {1,2,5,6,8,7,9,4,3,10};
		Arrays.sort(a);
		for (int i= 0 ;i<a.length;i++ ) {
			System.out.print(a[i]+" ");
		}
		int b=Arrays.binarySearch(a, 8);
//		返回查找元素的下标
		System.out.println(b);
	}
public static void main(String[] arg) {
		int a[]= {1,2,5,6,8,7,9,4,3,10};
		int b[]= {1,2,3};
		int c[]= {1,2,3};
		System.out.println(Arrays.equals(a, b));
		System.out.println(Arrays.equals(c, b));
	}
public static void main(String[] arg) {
		ArrayList<String> a =new ArrayList<String>();
		ArrayList<String> b =new ArrayList<String>();
		a.add("aaa");
		a.add("bbb");
		a.add("ccc");
		a.add("ddd");
		b.add("123");
		b.add("456");
		b.add("789");
		System.out.println(a);
		System.out.println(b);
		System.out.println("-----------------------------");
		a.remove(0);
		System.out.println(a);
		System.out.println(a.contains("aaa"));
		System.out.println(a.indexOf("ccc"));
		System.out.println("-----------------------------");
		a.addAll(b);
		System.out.println(a);
		a.removeAll(b);
		a.removeAll(a);
		System.out.println(a);
		
		
	}

	public static void main(String[] arg) {
		ArrayList<String> a =new ArrayList<String>();
		a.add("aaa");
		a.add("bbb");
		a.add("ccc");
		a.add("ddd");
//		使用Iterator输出
		Iterator<String> iter = a.iterator();
		while(iter.hasNext()) {
			System.out.print(iter.next()+" ");
		}
		System.out.println();
//		使用forEach输出
		for (String s : a) {
			System.out.print(s+" ");
		}
		System.out.println();
//		使用toString输出
		System.out.println(a);
		
//		使用for循环输出
		for (int i = 0; i < a.size(); i++) {
			System.out.print(a.get(i)+" ");
		}
		
	}
	

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;

public class HelloAdd {
	static ArrayList playerArray= new ArrayList();
	static List subListObj = new ArrayList();

	public static void main(String[] args) {
	add();
	display();
	System.out.println();
	search();
	System.out.println();
	extract();
	}

	static void add() {
	       for (int i = 0; i < 5; i++) {
	            playerArray.add(new Integer(i));
	       }
	        playerArray.add("Martina");
	        playerArray.add("Serena");
	        playerArray.add("Venus");
	        playerArray.add("Serena");
	}

	static void display() {
	       System.out.println("**************************************");
	       System.out.println("从 ArrayList 中检索对象");
	       System.out.println("**************************************");
	       System.out.println();
	       for (int i = 0; i < playerArray.size(); i++) 
	             System.out.print(" " + playerArray.get(i));
	     }
	static void search() {
	    System.out.println("***********************************************************");
	    System.out.println("搜索一个对象并返回第一个和最后一个位置");
	    System.out.println("************************************************************");
	    System.out.println("字符串\"Serena\"第一次出现在位置是 "+ playerArray.indexOf("Serena"));
	    System.out.println("字符串\"Serena\"最后一次出现在位置是 " 
	                                                + playerArray.lastIndexOf("Serena"));
	    System.out.println();    
	    }
	static void extract() {
	    System.out.println("************************************************");
	    System.out.println("提取一个子列表,然后输出新列表");
	    System.out.println("*************************************************");
	    System.out.println();
	    subListObj = playerArray.subList(5, playerArray.size());
	    System.out.println("索引 5 至"+playerArray.size()+"的新子列表为:"
	                                     + subListObj);
	    System.out.println();
	}

	
	
}
public static void main(String[] args) {
//		案例1:编写一个交错合并列表元素的程序。
//        例如:给定的两个列表为[a,B,C]和[1,2,3],函数返回[a,1,B,2,C,3]。
//        若两个表元素个数不同,多余的附在合并表的尾
		ArrayList<String> a = new ArrayList<String>();
		ArrayList<String> b = new ArrayList<String>();
		ArrayList<String> c = new ArrayList<String>();
		a.add("a");
		a.add("B");
		a.add("C");
		a.add("d");
		a.add("e");
		b.add("1");
		b.add("2");
		b.add("3");
		int length = a.size()>b.size()?b.size():a.size();
		for(int i = 0;i<length;i++) {
			c.add(a.get(i));
			c.add(b.get(i));
		}
		
		if(a.size()>b.size()) {
			for(int i=b.size();i<a.size();i++) {
				c.add(a.get(i));
			}
		}else if(a.size()<b.size()) {
			for(int i=a.size();i<b.size();i++) {
				c.add(b.get(i));
			}
		}
		for (int i = 0; i < c.size(); i++) {
			System.out.print(c.get(i)+" ");
		}
		
	}
	public static void main(String[] args) {
//		案例2:编写一个计算斐波那契数的程序。根据定义,斐波那契序列的前两位数字是0和1,
//		随后的每个数字是前两个数字的和。要求输出直到某项的值刚大于10000的前面所有项。
//		例如,前11位(刚大于50的前所有项)斐波那契数为:0,1,1,2,3,5,8,13,21,34,55。
		ArrayList<Integer> a = new ArrayList<>();
		a.add(0);
		a.add(1);
		int count2 =0;
		int count = 1;
		for(int i=0;;i++) {
			a.add(a.get(i)+a.get(i+1));
			count+=a.get(i+2);
			if(count>10000) {
				count2 = count-a.get(i+2);
				 break;
			}
		}
		System.out.println(count2+" "+count);
		
	}


//法二:
public static void main(String[] args) {
        // 创建一个存储斐波那契数列的ArrayList
        ArrayList<Integer> fibonacciList = new ArrayList<>();
        fibonacciList.add(0);
        fibonacciList.add(1);

        // 计算斐波那契数列
        while (true) {
            int nextFibonacci = fibonacciList.get(fibonacciList.size() - 1) + fibonacciList.get(fibonacciList.size() - 2);
            if (nextFibonacci > 10000) {
                break; // 如果当前数值大于10000,则退出循环
            }
            fibonacciList.add(nextFibonacci);
        }

        // 输出结果
        System.out.println("斐波那契数列(直到大于10000的前面所有项)为:" + fibonacciList);
    }
	public static void main(String[] args) {
       
	

//	案例3:任意从键盘输入若干学生的成绩,当输入-1时,停止输入数据,计算这些数据的平均成绩,
//	并输出高于平均成绩的值。
//	分析:
//	 (1) 定义一个存放成绩的容器,每输入一个成绩,就将成绩添加到数组中,直到输入完成。
//	 (2)计算总成绩、平均成绩。
//	 (3)输出高于平均成绩的值。
		Scanner cin = new Scanner(System.in);
		double score = 0;
		score = cin.nextDouble();
		List<Double> arr = new ArrayList<>();
		while(score!=-1) {
			arr.add(score);
			score = cin.nextDouble();
		}
		for (Double integer : arr) {
			System.out.print(integer+" ");
		}
		System.out.println();
		double sum = 0;
		for(Double i:arr) {
			sum+=i;
		}
		double average = sum/arr.size();
		System.out.println("总成绩:"+sum+" "+"平均成绩:"+average);
		System.out.println("高于平均成绩的:");
		for(Double i : arr) {
			if(i>average) {
				System.out.println(i+" ");
			}
		}
		
		
		
		cin.close();
	}
public static void main(String[] args) {
		LinkedList mylist = new LinkedList();
	     Student    stu_1 = new Student("赵一", 9012, 80.0f), 
                           stu_2 = new Student("钱二", 9013, 90.0f),
                           stu_3 = new Student("孙三", 9014, 78.0f), 
                           stu_4 = new Student("周四", 9015, 55.0f);
	     mylist.add(stu_1);
	     mylist.add(stu_2);
	     mylist.add(stu_3);
	     mylist.add(stu_4);
	     Iterator<Student> iter =  mylist.iterator();
	     while(iter.hasNext()) {
	    	 Student s = iter.next();
	    	 s.printStudent();
	     }
	}
	
	

class Student {
	private String name;
	private int number;
	private float score;
	public Student(String name, int number, float score) {
		this.name = name;
		this.number = number;
		this.score = score;
	}
    public void printStudent(){
        System.out.println(name + " " +number + "  " + score);
     }
}

总结:

1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。

2.对于随机访问getsetArrayList绝对优于LinkedList,因为LinkedList要移动指针。

3.对于新增和删除操作addremoveLinedList比较占优势,因为ArrayList要移动数据。

       

 

public static void main(String[] args) {
//        HashSet是Set接口的一个子类,主要的特点是:里面不能存放重复元素,
//        而且采用散列的存储方法,所以没有顺序。
//        这里所说的没有顺序是指:元素插入的顺序与输出的顺序不一致。

		Set set1 = new HashSet();
		set1.add("a");
		set1.add("b");
		set1.add("a");
		set1.add("c");
		set1.add("d");
		
		Iterator iter = set1.iterator();
		while(iter.hasNext()) {
			System.out.print(iter.next()+" ");
		}
	}
//很巧妙的写法,把add写到if中去了。

public static void main(String[] args) {
		HashSet  set = new HashSet();
        Scanner sc=new Scanner(System.in);
        String ss=null;
        ss=sc.next();
        while(!ss.equals("end")) {       
            if (!set.add(ss))
                  System.out.println("重复的单词: "+ss);
            ss=sc.next();
        }
        System.out.print("形成的集合为: "+set);        
    }

//常规写法

public static void main(String[] args) {
		HashSet  set = new HashSet();
        Scanner sc=new Scanner(System.in);
        String ss=null;
        ss=sc.next();
        while(true) {
        	ss = sc.next();
        	if(ss.equals("end")) {
        		break;
        	}
        	if(!set.contains(ss)) {
        		set.add(ss);
        	}else {
        		System.out.println("重复元素为:"+ss);
        	}
        	
        	
        	
        }
        System.out.print("形成的集合为: "+set);        
    }

还有TreeSet和Map没有写


http://www.kler.cn/a/428124.html

相关文章:

  • 7.抽象工厂(Abstract Factory)
  • arm-linux-gnueabihf安装
  • 【Unity3D】实现2D角色/怪物死亡消散粒子效果
  • 算法的时间复杂度
  • games101-作业2
  • 学习数据结构(2)空间复杂度+顺序表
  • 跟李笑来学美式俚语(Most Common American Idioms): Part 54
  • 15.数据容器-字典dict
  • 在玩《黑神话:悟空》时游戏画面卡顿是什么原因?游戏画面卡顿要怎么解决?
  • Rust快速入门(四)
  • 反向代理支持websocket
  • 虚幻引擎---材质篇
  • 路径规划之启发式算法之九:灰狼优化算法(Grey Wolf Optimizer,GWO)
  • 3D 生成重建020-Gaussian Grouping在场景中分割并编辑一切
  • 沃德云商协系统微信小程序PHP+Uniapp
  • 【返璞归真】-切比雪夫不等式(Chebyshev‘s Inequality)
  • cmakelist使用总结
  • pycharm集成环境中关于安装sklearn库报错问题分析及解决
  • Django drf 基于serializers 快速使用
  • 专升本计算机——计算机基础知识测试(答案解析)
  • PHP和GD库如何给图片添加透明效果
  • CorsConfig前后端数据跨域连接,IDEA右侧Maven窗口消失
  • 每日一练 | Diff-Serv在QoS配置中的应用
  • 树莓派3B+驱动开发(4)- LED驱动(DTS和Driver模式)
  • 计算机毕业设计Python医疗问答系统 医疗可视化 BERT+LSTM+CRF深度学习识别模型 机器学习 深度学习 爬虫 知识图谱 人工智能 大数据毕业设计
  • [ABC267D] Index × A(Not Continuous ver.)