关于如何进行低级Java优化有很多问题和答案以及意见,包括for,while和do-while循环,以及是否有必要.
我的问题更多的是基于高级别的设计优化.我们假设我必须做以下事情:
对于给定的字符串输入,计算字符串中每个字母的出现次数.
当字符串是几个句子时,这不是一个主要问题,但如果相反,我们想要计算900,000个单词文件中每个单词的出现.建设循环只是浪费时间.
那么什么是可以应用于此类问题的高级设计模式.
我想我的主要观点是我倾向于使用循环来解决许多问题,并且我想摆脱使用循环的习惯.
提前致谢
山姆
ps如果可能,你可以产生一些伪代码来解决900,000字的文件问题,我倾向于理解代码比我能理解英语更好,我认为对于这个网站的大多数访问者来说都是一样的
我想从资源包中读取JST formatDate的模式,但这种天真的方法不起作用,我做错了什么?
在com/company/MyPortlet.properties中是这个键:
company.date.format = yyyy-MM-dd HH:mm:ss
Run Code Online (Sandbox Code Playgroud)
在页面我有:
<fmt:setBundle basename="com.company.MyPortlet"/>
<fmt:formatDate value="${date}" pattern="${company.date.format}" />
Run Code Online (Sandbox Code Playgroud) 我想,ThreadLocal变量是在Thread Local allocation Buffer(s)或TLABs中分配的,我是对的吗?
我没有成功找到任何文件,说明究竟是什么让一些类存储在TLAB中.如果您了解一些,请发布链接.
我一直在无限循环中捕获我的代码.
它没什么可提升的,但我无法理解我的生活!
有人请帮忙
我只是重新创建了特定的错误,没有我在实际程序中的所有if语句.
package bs;
import java.util.InputMismatchException;
import java.util.Scanner;
public class bs {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
boolean continueVar = true;
while (continueVar) {
try {
System.out.println("Enter Something");
int input = sc.nextInt();
} catch (InputMismatchException i) {
System.out.println("What the f***?");
continueVar = true;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
捕获输入不匹配异常时会发生无限循环.我认为它至少会要求用户重新输入他们的输入,但不是这样做,而是继续循环,如下所示:
run:
Enter Something
df
What the f***?
Enter Something
What the f***?
Enter Something
What the f***?
Run Code Online (Sandbox Code Playgroud)
它的行为就像只是忽略扫描仪对象sc?!
java exception-handling try-catch infinite-loop java.util.scanner
我想String在Java中拆分*使用该split方法.这是代码:
String str = "abc*def";
String temp[] = str.split("*");
System.out.println(temp[0]);
Run Code Online (Sandbox Code Playgroud)
但是这个程序给了我以下错误:
Exception in thread "main" java.util.regex.PatternSyntaxException:
Dangling meta character '*' near index 0 *
Run Code Online (Sandbox Code Playgroud)
我稍微调整了一下代码,'\\*'用作分隔符,它完美地运行.任何人都可以解释这种行为(或建议一个替代解决方案)?
我不想用StringTokenizer.
我想获取当前的 git 分支名称以使用包含分支名称的文件名构建二进制文件。在 Netbeans(7.1) 中使用 ant 可以吗?
我在Indigo有一个嵌套的m2Eclipse项目.父项目包含嵌套模块使用的src文件夹(请参阅下面的结构).
从Maven运行配置运行mvn包构建所有模块,因此依赖关系管理似乎正在运行.但是,我没有MAVEN DEPENDENCIES文件夹,我不能在任何源文件上使用Java内容辅助或任何其他Java项目功能.我尝试将项目转换为分面形式并添加java facet,但这也无效.
我想在wicket框架中的表的每个单元格中添加一个包含图像的列.我在java类中创建表,并具有createColumns()方法,如下所示:
private List<IColumn> createColumns() {
List<IColumn> columns = new ArrayList<IColumn>();
// Create the columns that will be displayed, second param is the sort
// order
// Use column position for aggregate functions
// Otherwise the query uses column aliases so these need to match here
columns.add(new PropertyColumn(new Model("Status"), "code") {
private static final long serialVersionUID = 1L;
@Override
public void populateItem(Item item, String componentId, IModel model) {
Object[] values = ((ArrayWrapper) model.getObject()).getArray();
setStatus((Integer) values[0]);
item.add(new Image(componentId, new ResourceReference(this.getClass(), getStatus())));
} …Run Code Online (Sandbox Code Playgroud) 我试图在子类中使用和理解构造函数是正确的.让我们从一些代码开始:
// creating an object
account = new CreditAccount(accountNumber, personalNumber);
// constructor in superclass Account
public Account(int aNumber, int pNumber) {
accountNumber = aNumber;
personalNumber = pNumber;
}
// constructor in the subclass CreditAccount
public CreditAccount(int aNumber, int pNumber) {
super(accountNumber, personalNumber);
}
Run Code Online (Sandbox Code Playgroud)
当我创建新的对象,creditAccount我送accountNumber并personalNumber在子类中的构造函数.但我做得对吗?(它没有用!)我是否会在子类中使用super来获取超类构造函数的内容?
由于子类只从超类而不是构造函数继承数据库和方法,我很好奇如何做到这一点?
当我在另一个类中调用displayTime12hrclock方法时,它拒绝打印出AM或PM.我无法理解为什么.
public class Tuna {
private int hour;
private int minute;
private int second;
public void setTime(int h, int m, int s){
hour = h;
minute = m;
second = s;
hour = ((h>= 0 && h <=24 ? h:0));
minute = ((m>= 0 && m <=60 ? m:0));
second = ((s>= 0 && s <=60 ? s:0));
}
public String displayTime(){
return String.format("%02d:%02d:%02d", hour,minute,second);
}
public String displayTime12hrclock(){
return String.format("%d:%02d:%02d", ((hour==0 || hour ==12)?12:hour%12), minute, second, (hour >=12)? "AM":"PM"); …Run Code Online (Sandbox Code Playgroud) 所以我还有另外一个任务,任务是使用compareTo方法按字母顺序分配3个字符串.基本上程序从测试器类接收3个字符串(a,b和c),它应该返回"getMin","getMiddle"和"getMax".
我想出了getmin和max,看起来很简单但是我遇到了getMiddle的问题.这就是我对min和max的看法:
String min = "";
if (a.compareTo(b) <= 0 && a.compareTo(c) <= 0) min = a;
else if (b.compareTo(a) <= 0 && b.compareTo(c) <= 0) min = b;
else if (c.compareTo(b) <= 0 && c.compareTo(a) <= 0) min = c;
return min;
Run Code Online (Sandbox Code Playgroud)
并且类似地,get max仅略有不同.我该如何创建getMiddle.我们也不允许使用数组,因为我们尚未"学习"它们.而教授说,获得中间的代码应该在5-6行左右.
谢谢
java ×11
algorithm ×1
ant ×1
bigdata ×1
collections ×1
constructor ×1
dependencies ×1
distributed ×1
eclipse ×1
escaping ×1
facets ×1
formatting ×1
git ×1
inheritance ×1
jsf ×1
jsp ×1
jstl ×1
localization ×1
m2eclipse ×1
netbeans-7 ×1
performance ×1
primefaces ×1
regex ×1
sorting ×1
split ×1
string ×1
thread-local ×1
try-catch ×1
wicket ×1