JAVA最科学的多状态记录
数据库当中一个表的字段越少效率越高,所有科学的利用一个字段,是我们势在必行的。下面是我开发的多状态,但字段记录法。非常实用。
以下是测试代码:
@Test public void test(){ List<String> status = new ArrayList<String>(); status.add("数学");status.add("语文");status.add("物理");status.add("化学");status.add("政治"); StatusBitUtil staBitUtil = StatusBitUtil.StatusBitUtilFactory(status); List<String> stax = new ArrayList<String>(); stax.add("数学");stax.add("政治"); int bitx = staBitUtil.getBit(stax); System.out.println(bitx); List<String> stay = staBitUtil.getStatus(bitx); for (String xVal : stay){ System.out.println(xVal); } }
package test; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.junit.Test; /** * yuguo21工具类之《多选状态位》 * QQ:80303857 * @author solid * */ public class StatusBitUtil { private List<String> status = null; private Map<Integer,String> statusBitMap = new HashMap<Integer, String>(); private int summation = 0; private StatusBitUtil (List<String> status){ this.status = status; for (int i=0;i<status.size();i++){ int offsetVal = 1<<i; summation += offsetVal; statusBitMap.put(offsetVal, status.get(i)); } } /** * 类生成器,请不要这样使用StatusBitUtil。StatusBitUtilFactory(someParm).someMedth(xx); * 推荐 StatusBitUtil someBody = StatusBitUtil。StatusBitUtilFactory(someParm); * someBody.someMedth(xx); * @param status 所有状态 * @return */ public static StatusBitUtil StatusBitUtilFactory(List<String> status){ return new StatusBitUtil(status); } /** * 根据特定数值返回所对应的所有状态 * @param bitSum 状态值 * @return */ public List<String> getStatus(int bitSum){ List<String> statusList = new ArrayList<String>(); int [] allBit = toBinary(bitSum); for (int i=0;i<allBit.length;i++){ int key = allBit[i]; String val = statusBitMap.get(key); statusList.add(val); } return statusList; } /** * 传递过来状态值(s>0),返回状态位(b>=0) * @param status 状态值 * @return 返回0,并未找到对应状态位,大于0返回所有状态位和 */ public int getBit(List<String> status){ int retVal = 0; int i=0; for (String thisStatusVal : this.status){ for (String statusVal : status){ if (thisStatusVal.equals(statusVal)){ int offsetVal = 1<<i; retVal += offsetVal; } } i++; } return retVal; } /** * 最多可设置多少状态为 * @return 可设置状态为最大值 */ public int maxStatusBit(){ return Integer.SIZE; } /** * 把二进制数按位拆分后的整数集合 * @param bit * @return */ private int[] toBinary(int bit){ String bin = Integer.toBinaryString(bit); char[] charBin = bin.toCharArray(); int[] retVal = new int[trueVal(charBin)]; /** * i=迭代/位移,x=按位获取,y=设置最终数值 */ for(int i=(charBin.length-1),x=0,y=0;i>-1;i--,x++){ char tempC = charBin[x]; int tempInt = new Integer(tempC+""); int bitBin = tempInt<<i; if (bitBin>0){ retVal[y] = bitBin; y++; } } return retVal; } private int trueVal(char[] charBin){ int retVal = 0; for (char bin : charBin){ if (bin != '0'){ retVal++; } } return retVal; } /** * 全选所有状态位 * @return */ public int allStatus(){ return this.summation; } /** * 测试使用构造函数 */ public StatusBitUtil (){} @Test public void test(){ List<String> status = new ArrayList<String>(); status.add("数学");status.add("语文");status.add("物理");status.add("化学");status.add("政治"); StatusBitUtil staBitUtil = StatusBitUtil.StatusBitUtilFactory(status); List<String> stax = new ArrayList<String>(); stax.add("数学");stax.add("政治"); int bitx = staBitUtil.getBit(stax); System.out.println(bitx); List<String> stay = staBitUtil.getStatus(bitx); for (String xVal : stay){ System.out.println(xVal); } } }
相关推荐
首先,我们要明白,Spinner控件本身不支持多选,因此我们需要扩展Spinner类并重写其内部方法。通常,我们会创建一个新的Adapter来处理多选行为。Adapter是Android中用于将数据与视图绑定的组件,我们可以自定义一个...
【《报复》[法]雨果克里兹,阅读答案及考点】 报复 雨果克里兹.docx
【雨果网】家具品类出海指南.pdf【雨果网】家具品类出海指南.pdf【雨果网】家具品类出海指南.pdf【雨果网】家具品类出海指南.pdf【雨果网】家具品类出海指南.pdf【雨果网】家具品类出海指南.pdf【雨果网】家具品类...
雨果叙事诗贫苦人.doc
1、极速恢复是瞬间恢复技术的开拓者,是由南京安悦科技(雨过天晴电脑保护系统公司)自主开发、自主管理、自主运营的一款主打软件。 2、和市场上同类软件功能对比如下: A、Ghost 备份速度太慢,备份文件占用空间大...
雨果,这位法国文学巨匠,其作品不仅仅局限于一个时代,他的影响力穿越了时空的界限,为全球的读者提供了无尽的精神滋养。在现当代文学的讨论中,我们不仅回顾了雨果的文学成就,更深入探讨了他所传递的人文精神以及...
维克多·雨果,作为19世纪法国文学的巨匠,不仅以其丰富的文学作品影响了世界,更以其深厚的人道主义思想成为一代思想家。他的作品,特别是代表作《九三年》,不仅是文学领域的经典,也是人道主义思想研究的重要文本...
雨果名言.doc
- 为了保存用户的多选状态,可以在应用退出时将选中项保存到SharedPreferences或数据库中。 - 当应用重新启动时,读取这些数据并恢复 Spinner 的多选状态。 6. **适配不同的数据源**: - 自定义Adapter应能灵活...
【摘要】及【关键词】部分虽提及的是电影《悲惨世界》与雨果的人道主义思想,但实际内容更偏向于文学分析,因此这里主要探讨雨果在《悲惨世界》中展现的人道主义思想及其对善恶的理解。 维克多·雨果是19世纪法国...
【雨果的名言警句】是文学巨匠维克多·雨果的智慧结晶,这些语录揭示了人生、人性、梦想与道德等深刻主题。他的名言中蕴含着丰富的哲理,对于理解生活、追求理想以及面对困境都有着启发性的作用。 1. **梦想与现实*...
综上所述,从《巴黎圣母院》看雨果的人道主义,我们可以看到一位伟大的作家如何通过笔下的故事,传达对人性的深刻理解,对社会的深切关怀,以及对美好未来的不懈追求。雨果的人道主义不仅存在于他的文字中,更在于他...
雨果的美学观点关注社会底层的人民,并试图通过艺术表现形式,让人们认识到内在精神和心灵之美的重要性。 对比庄子和雨果的美丑观,我们可以发现他们对美的本质的看法存在着共通之处和差异。共通之处在于他们都从人...
雨果通过贾维尔的形象,批判了当时社会的冷酷无情,呼吁人们关注底层人民的生存状态。 三、“幸福世界”雨果的人道主义的思想 在雨果的笔下,尽管“悲惨世界”充满了苦难,但“幸福世界”的理想始终存在。雨果的...
故事讲述了雨果与另一位著名作家巴尔扎克的交往。巴尔扎克去雨果家中做客,不慎打碎了雨果心爱的笔筒。然而,为了不让朋友感到愧疚,雨果却谎称那个笔筒只是一个普通的梨木赝品,实际上,笔筒是一个价值不菲的真品。...
"鲁迅与雨果:跨时空对话"这一主题,揭示了两位文学巨匠——中国的鲁迅与法国的雨果之间跨越时空的文化交流与精神共鸣。鲁迅是中国现代文学的重要奠基人,他对法国文化,尤其是法国文学有着深厚的热爱。他在翻译雨果...
雨果的人道主义思想是他文学创作的核心主题之一,通过他的作品,特别是《悲惨世界》,我们可以看到他对社会底层人民的同情、对资本主义社会的抨击和对人性的崇高追求。 二、雨果人道主义思想的三大主题 1. 对社会...
在2013年春节前 638863-852848-782793 用此序列号可以终身使用 具体请上与过天晴官网查看
[给雨果的一封信600]给雨果的一封信.docx
【标题】: 从《悲惨世界》看雨果的人道主义思想 【描述】: 本文探讨了法国浪漫主义文学大师雨果在其著作《悲惨世界》中所体现的人道主义思想,通过分析作品中的人物与情节,揭示了雨果对于真、善、美的追求以及对...