冯佳java基础总结

文件io流操作,如果是fileinputstream,必须读的文件存在再行。fileoutputStream文件不用存在写入磁盘可以自动生成。
文件读到最后的标志是读取的内容返回的是-1。如果不等于-1说明任然有值,可以继续。等于-1说明到了文件末尾。

FileInputStream fis = new FileInputStream("04-JavaScript高级资料.zip");// 读文件首先的保证文件存在
		FileOutputStream fos = new FileOutputStream("c.zip");//往硬盘写如果没有的话会自动创建文件	 	
		int b;//一个一个读,存放每次读到的内容
		while((b = fis.read()) != -1) {//等于-1说明到了文件结束
			fos.write(b);//边读边写
		}
		
		fos.close();
		fis.close();

1.list
2.set
HashSet:存入的内容必须重写HashCode方法和equals()方法。一般自定义对象需要我们自己重写。一般String/Integer等底层内部重写了相关方法。
TreeSet:二叉树,这个是可以用来排序的。但是存入的内容必须重写complaerTo()方法。即实现Compable接口。传入匿名内部对象,实现比较方法()。
其实编码中常见的开始日期结束日期大小比较就可以使用Integer的complaerTo()方法。
TreeSet集合是用来对象元素进行排序的,同样他也可以保证元素的唯一
* 当compareTo方法返回0的时候集合中只有一个元素
* 当compareTo方法返回正数的时候集合会怎么存就怎么取
* 当compareTo方法返回负数的时候集合会倒序存储
如果想让他保存重复的元素让其返回为1即可。为正。为0只保存一个。
在这里插入图片描述
在这里插入图片描述

3.map
LinkedHashMap可以保证怎么存就怎么取。
面试题
* HashMap和Hashtable的区别
* 共同点:
* 底层都是哈希算法,都是双列集合
* 区别:
* 1,HashMap是线程不安全的,效率高,JDK1.2版本
* Hashtable是线程安全的,效率低,JDK1.0版本的
* 2,HashMap可以存储null键和null值
* Hashtable不可以存储null键和null值。
数组转换成集合
* 数组转换成集合虽然不能增加或减少元素,但是可以用集合的思想操作数组,也就是说可以使用其他集合中的方法。
* List list = Arrays.asList(arr); //将数组转换成集合
//list.add(“d”); //不能添加

  • A:泛型概述
    * B:泛型好处
    * 提高安全性(将运行期的错误转换到编译期)
    * 省去强转的麻烦
    * C:泛型基本使用
    * <>中放的必须是引用数据类型
    * D:泛型使用注意事项
    * 前后的泛型必须一致,或者后面的泛型可以省略不写(1.7的新特性菱形泛型) 。

总结:和Hash相关必须重写HashCode()和equal方法。如果HashCode()返回值不同就不再调用equals()。如果相同接着调用equals()。
和Tree相关必须实现Compalable接口或者构造方法传入new complor()匿名对象重写ComplaleTo()方法。如果返回为-1放到左边,如果为0只保存一次,如果为1放到右边。可以保存重复。Tree主要用于排序,所以需要重写排序规则。

TreeMap<Student, String> tm = new TreeMap<>(new Comparator<Student>() {

			@Override
			public int compare(Student s1, Student s2) {
				int num = s1.getName().compareTo(s2.getName());		//按照姓名比较
				return num == 0 ? s1.getAge() - s2.getAge() : num;
			}
		});
    • A:Map集合的功能概述
      • a:添加功能
        • V put(K key,V value):添加元素。
          • 如果键是第一次存储,就直接存储元素,返回null
          • 如果键不是第一次存在,就用值把以前的值替换掉,返回以前的值
      • b:删除功能
        • void clear():移除所有的键值对元素
        • V remove(Object key):根据键删除键值对元素,并把值返回
      • c:判断功能
        • boolean containsKey(Object key):判断集合是否包含指定的键
        • boolean containsValue(Object value):判断集合是否包含指定的值
        • boolean isEmpty():判断集合是否为空
      • d:获取功能
        • Set<Map.Entry<K,V>> entrySet():
        • V get(Object key):根据键获取值
        • Set keySet():获取集合中所有键的集合
        • Collection values():获取集合中所有值的集合
      • e:长度功能
        • int size():返回集合中的键值对的个数.
  • Collection

    •  List(存取有序,有索引,可以重复)
      
    •  	ArrayList
      
    •  		底层是数组实现的,线程不安全,查找和修改快,增和删比较慢
      
    •  	LinkedList
      
    •  		底层是链表实现的,线程不安全,增和删比较快,查找和修改比较慢
      
    •  	Vector
      
    •  		底层是数组实现的,线程安全的,无论增删改查都慢
      
    •  	如果查找和修改多,用ArrayList
      
    •  	如果增和删多,用LinkedList
      
    •  	如果都多,用ArrayList
      
    •  Set(存取无序,无索引,不可以重复)
      
    •  	HashSet
      
    •  		底层是哈希算法实现
      
    •  		LinkedHashSet
      
    •  			底层是链表实现,但是也是可以保证元素唯一,和HashSet原理一样
      
    •  	TreeSet
      
    •  		底层是二叉树算法实现
      
    •  	一般在开发的时候不需要对存储的元素排序,所以在开发的时候大多用HashSet,HashSet的效率比较高
      
    •  	TreeSet在面试的时候比较多,问你有几种排序方式,和几种排序方式的区别
      
    • Map
    •  HashMap
      
    •  	底层是哈希算法,针对键
      
    •  	LinkedHashMap
      
    •  		底层是链表,针对键
      
    •  TreeMap
      
    •  	底层是二叉树算法,针对键
      
    •  开发中用HashMap比较多
      
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值