「java链条」java链式
本篇文章给大家谈谈java链条,以及java链式对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、java问题,链表跟顺序表到底有什么不同?顺序表我知道,但是为什么说链表读取数据时要从头开始,
- 2、用java代码实现责任链模式的骨干代码
- 3、如何评价佳沃(JAVA)牌自行车?
- 4、java 数据类型转换
java问题,链表跟顺序表到底有什么不同?顺序表我知道,但是为什么说链表读取数据时要从头开始,
接楼上:准确的来说,你的问题是一个数据结构上的问题.
首先你要区分一下物理上的存储结构 与 逻辑上的数据结构
物理上的存储结构
链式存储结构
顺序存储结构
逻辑上的数据结构
线性数据结构 :单链表 双向链表 循环列表(栈 队列 ...)
树:普通树 特殊树
查找表 : 静态查找表,动态查找表
图:有向图 ...
任何逻辑上的数据结构要在计算机上表示时,都必须根据自己的需求选择一种物理上的存储结构,然后根据逻辑数据结构的特性进行存储等等操作.
对于物理上的存储结构而言
顺序存储结构 : 只要知道基址地址,就可以通过数学计算出任一元素 的地址.
链式存储结构: 上下家不能越级联系,你知道爸爸是谁,但是不知道爷爷是谁,想找爷爷只能通过爸爸.(下一个结点的地址存储在上一个结点中)
这种特性是由于其物理实现决定的,目前暂时看没有办法改变.
回过头来看你的问题中两个关键的概念定义:
链表:以链式存储结构存储的线性表叫做链表
顺序表:以顺序存储结构存储的线性表叫做顺序表
所以:
顺序表可以随即存取任一元素.而链表在绝大部分情况下都需要遍历查找.
用java代码实现责任链模式的骨干代码
//----------------先写了个,功能是实现了,有待改进-----------
import java.util.ArrayList;
import java.util.List;
/**
* 现有ListSourceBean类型的List对象,
* 现在需要将该List对象中a是奇数或者b100的对象过滤掉,
* 请用责任链模式实现此段代码。
* @author Administrator
*
*/
public class Chain_test1 {
public static void main(String[] args) {
ListSourceBean list = new ArrayListSourceBean();
SourceBean bean1 = new SourceBean(1, 100);
SourceBean bean2 = new SourceBean(2, 200);
SourceBean bean3 = new SourceBean(3, 100);
SourceBean bean4 = new SourceBean(4, 100);
SourceBean bean5 = new SourceBean(5, 20);
SourceBean bean6 = new SourceBean(6, 200);
list.add(bean1);
list.add(bean2);
list.add(bean3);
list.add(bean4);
list.add(bean5);
list.add(bean6);
System.out.println("过滤前List中的内容");
printList(list);
// 装配 链条
Filter oddFilter = new OddFilter();
//为了保持Filter里面的逻辑不混乱,OddFilter仅过滤奇数,CompareFilter仅仅过滤b100
//这里对奇数过滤两次,
//即,过滤掉b100和a是奇数 共存的情形
Filter oddFilter2 = new OddFilter();
Filter compareFilter = new CompareFilter();
oddFilter.setFilter(null);
compareFilter.setFilter(oddFilter);
oddFilter2.setFilter(compareFilter);
// 进行过滤
oddFilter2.doFilter(list);
System.out.println("\n过滤后List中的内容");
printList(list);
}
public static void printList(ListSourceBean list){
for(SourceBean s: list){
System.out.print(s.toString());
}
}
}
class Filter{
private Filter filter;
public void doFilter(ListSourceBean list){
if (filter != null){
filter.doFilter(list);
}else{
System.out.println("处理结束");
}
}
public void setFilter(Filter filter){
this.filter = filter;
}
}
/**
* 仅仅过滤b100
*/
class CompareFilter extends Filter{
public void doFilter(ListSourceBean list){
for(int i= 0; i list.size(); i++){
if(list.get(i).getB() 100 ){//b100
list.remove(i);//移除该对象
}else{//交给其他Filter处理
super.doFilter(list);
}
}
}
}
/**
* 仅过滤a为奇数
*/
class OddFilter extends Filter{
public void doFilter(ListSourceBean list){
for(int i= 0; i list.size(); i++){
if(list.get(i).getA() % 2 != 0){//非偶数
list.remove(i);//移除该对象
}else{//交给其他Filter处理
super.doFilter(list);
}
}
}
}
class SourceBean {
private int a;
private int b;
public SourceBean(int a, int b){
this.a = a;
this.b = b;
}
public SourceBean(){
}
public String toString(){
return "[a="+a+", b="+b+"] ";
}
public int getA() {
return a;
}
public void setA(int a) {
this.a = a;
}
public void setB(int b) {
this.b = b;
}
public int getB() {
return b;
}
}
//------------------------执行结果----------------------------
过滤前List中的内容
[a=1, b=100] [a=2, b=200] [a=3, b=100] [a=4, b=100] [a=5, b=20] [a=6, b=200]
过滤后List中的内容
[a=4, b=100]
如何评价佳沃(JAVA)牌自行车?
挺好的,中端品牌。
Java的原装配件(以我使用过的终结者为例),除了手变和前后拨是实打实的禧玛诺,别的东西,牙盘和轮组是自家的deca,夹器是彦豪。这三个是配置上主要的槽点,至于日辉的飞轮和没注意是哪家的链条,还算够用。
牙盘。终结者的原装是deca的蜘蛛盘,应该是仿佳能戴尔的。铝合金一体成型,看起来很有机械感,觉得挺好看。偶尔出现了断齿。铝材的质量应该是不太行的。
夹器。说公路车刹不住。可能是刹车皮的问题,确实会打滑,换了105的夹器,难顶。建议买整车的话,不管是哪个款,首先把夹器换掉。
java 数据类型转换
java中数据类型是有个隐式的自动转换的.
byte,short,int和long都是整数,任何数字(如1,11,111等),只要不超过范围,都是可以赋值给byte,short,int类型的,但不能直接赋值给long,必须在后面加上L(大小写均可),任何char,byte,short,int之间的计算的结果都是int
型,
如题,
a
=
1;把1赋给a,当然把1赋给byte是没有问题的,
a
=
a
+
1
;
这样就等于把int型赋给了byte型是会报错的.
a
+=
1
是自增运算,+=,-=,*=,/=等运算是不会转成其他类型的,此题中虽然结果与a
=
a
+
1一样;
顺便展开一点讲,共有8种基本数据类型,顺要说明的是:byte,short,int,long,float,double,boolean,char
1.char,byte,short,int之间运算会自动转换为int,不包括自增与自减;
char会以ASCII码转换
2.如下链条,可以向下赋值,反之刚不行,比如,byte值可以赋给short变量,反之则不行.
3.数字默认类型是int,是不符合如下链条的例外情况,只要不超过范围可以赋值给char,byte,short等类型,比如可以byte
a
=
127是对的,byte
a
=
128是会编译错误的;
4.有小数点的都默认为为double型,加f变float,如2.5f
5.boolean只能逻辑运算
byte-short-int-long-float-double
char-int
java链条的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java链式、java链条的信息别忘了在本站进行查找喔。
发布于:2022-12-18,除非注明,否则均为
原创文章,转载请注明出处。